1. はじめに
Pythonでデータを扱うときに、よく出てくる「リスト」と似たデータ型に「タプル」をよく見かけます。
タプルは、リストとほとんど似ていますが、一度作ったら中身を変えられない「不変(immutable)」な特徴があります。ここでは、タプルの基本や使い方、メリット・注意点について、説明してゆきます。
いいですね~「イミュータブル」。響きがよい。Rustみたいですね。イミュータブル。文系としては会社で使ってゆきたいワードですね。
2. タプルとは?
タプルは、複数の値をひとまとめにするための箱のようなもの。 - リストは自由に中身を変えられるけれど、タプルは一度決めたら中身が変わらない - そのため、間違ってデータが変わってしまう心配がない
例えば、関数から複数の結果を返すときや、変えてはいけない設定値を保存するのに便利。
3. タプルの作り方
タプルは、基本的に小括弧「()」の中に値をカンマで区切る。
# 例:複数の要素を持つタプル fruits = ("apple", "banana", "cherry") print(fruits) # 結果: ('apple', 'banana', 'cherry')
また、括弧を省略して書くこともできる?みたいです。
# 括弧なしでもタプルになる numbers = 1, 2, 3, 4, 5 print(numbers) # 結果: (1, 2, 3, 4, 5)
注意点
- 要素が1つだけのタプルを作るときは、後ろにカンマ「,」を必ず付く
single = ("only",) # これはタプル not_tuple = ("only") # これは単なる文字列
4. タプルの基本操作
4.1 要素の取り出し
タプルは順番が決まっているので、インデックス番号を使って値にアクセスできるとのこと。 (インデックスは0から始まります)
t = ("apple", "banana", "cherry", "date") print(t[0]) # 結果: apple print(t[-1]) # 結果: date(-1は最後の要素)
4.2 スライスで部分を取り出す
スライスを使えば、タプルの中の一部を新しいタプルとして取り出せる。
# インデックス1から3まで(3は含まれない) sub_t = t[1:3] print(sub_t) # 結果: ('banana', 'cherry')
4.3 タプルの結合と繰り返し
タプルは「+」で結合、「*」で繰り返しができる。
t1 = (1, 2, 3) t2 = (4, 5, 6) combined = t1 + t2 print(combined) # 結果: (1, 2, 3, 4, 5, 6) # 繰り返し repeated = t1 * 3 print(repeated) # 結果: (1, 2, 3, 1, 2, 3, 1, 2, 3)
5. タプルのアンパッキング
タプルにまとめた値を、複数の変数に一度に代入する「アンパッキング」ができる。 これは、メソッドの戻り値が複数ある場合などにとても便利です。
# タプルのパッキング(まとめる) person = "Kunio", 40, "Engineer" # アンパッキング(分解して変数に代入) name, age, job = person print(name) # 結果: Kunio print(age) # 結果: 40 print(job) # 結果: Engineer
さらに、collectionsモジュールのnamedtupleを使うと、タプルの各要素に名前を付けられるので、読みやすくなった。
from collections import namedtuple Person = namedtuple("Person", ["name", "age", "job"]) p = Person("Bob", 28, "Designer") print(p.name) # 結果: Bob
#6. タプルの使いどころと注意点
使いどころ - 一度決まったら変更しないデータを扱うとき(設定値や定数など) - 関数の戻り値として複数の値を返すとき( Kunioはこれを使いそう ) - 辞書のキーとして使う(リストは使えません)
注意点 ・タプルは作った後で要素を変更できないため、もし後で値を追加・削除したい場合はリストを使うことになるかな。
7. まとめ
Pythonのタプルは、リストととても似ていますが「不変」であるため、データが間違って変更される心配がなく、信頼性の高いデータの保持に適しているので、いいですね!Rustっぽいのがかっこよい!!! - タプルは簡単で、小括弧とカンマで囲むだけ。 - インデックスやスライスで簡単にアクセスでき、結合や繰り返しも可能。 - アンパッキングで複数の変数に一気に値を取り出すことができ、namedtupleを使えばより分かりやすくなる!
これらの基本を理解すれば、タプルの利点を生かして、読みやすく安全なコードが書けるようになるでしょう。初心者はまず、実際にコードを書いて動かしてみることをおすすめします。タプルの「変えられない」性質は、思わぬバグを防ぐ大切なポイントかな。。。って思ったり。。
以上、Pythonのタプルについての解説でした。自分の会社のプロジェクトでタプルを活用し、シンプルでミスの少ないコードを目指してゆきたいものですね。。。
引き続きよろしくお願いいたします。
※以下、広告です。これを使って操作しています。