
tuple(タプル)は、1つの変数に複数の値を保存することができる構造体です。listと似ていますが、違いは『要素を追加したり編集できない』点です。要素を追加したり編集することができないので、そのtupleのデータは、生成された時の状態が保証されます。また、編集できないというデメリットはありますが、listより処理速度が速いというメリットがあります。
『要素を追加・編集できない』こと以外はlistと基本的には同じですので、まだlistを学習していない方やうろ覚えの方は、先にlistの復習をしておくと良いでしょう。
Table of Contents(目次)
tupleの初期化
tupleの初期化の基本
まずは、最小限のtupleの初期化を行ってみましょう。次のようにコードを記述します。
num_tuple = ()
変数名と丸カッコ()
をイコールで結びます。これが、要素数0のtupleです。
解説のために、要素数0のtupleの初期化を紹介しましたが、tupleは後で要素を足すなどの編集が行えない構造体なので、要素数0で初期化する意味はありません。(+
演算子を使用することで他のtupleの要素を足し合わせることはできますが、各tupleの要素を抽出して新しいtupleが生成されることになるので、そのtuple自身に要素が追加・編集されるわけではありません。)
複数の要素を持つtuple
tupleは、要素を1つ以上持つことができます。次のように、tupleの初期化を行うことができます。
numbers = (1, 2, 3, 4, 5)
primes = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
alphabets = ('a', 'b', 'c', 'd', 'e')
cities = ('Tokyo', 'New York', 'Paris', 'Rio de Janeiro', 'Cairo')
上記コードは、tupleの初期化を行っています: (1)整数のtuple、(2)素数(primes)のtuple、(3)アルファベットのtuple、(4)都市名のtuple。
tupleの各要素は、カンマ(,
)で区切りながら記述します。
要素数が1のtupleの初期化方法
tupleは、定義する要素が1つだけの場合、その要素の後にカンマ(,
)を付ける必要があります。
num_tuple = (1,) # 要素が1つだけの場合は要素の後にカンマを付ける
num_tuple = (1) # カンマを付けないと、整数の1として扱われる
num_tuple = (1, 2) # 要素が2つ以上の場合はlistと同じように記述する
tupleは丸カッコを使って定義するため、数値の計算などと区別する必要があり、そのためにこのようなルールがあります。
その他の初期化方法
tupleの要素をカンマで区切って並べることで、丸カッコで囲わなくてもtupleとして認識されます。
num_tuple = 1, # 要素数が1の場合はカンマが必要
num_tuple = 1, 2, 3
複数のデータ型を要素に持つtuple
基本的にtupleは、『数値だけのtuple』『文字列だけのtuple』のように、1つのtupleに1種類のデータ型を持たせるのが分かりやすくて管理もしやすいのですが、次のコードのように異なったデータ型を1つのtupleに持たせることができます。
mixed = (1, 'two', 3.0, [4], (5, 5.5))
上記コードのtupleには、int, string, float, list, tupleのデータ型が含まれています。このように、Pythonのtupleは複数の種類のデータを簡単に管理することができます。
tupleの要素の取り出し
tupleの要素の情報を取り出したい時は、listや文字列と同じように[n]
のように記述します。先ほどの"mixed"変数の要素を取り出してみましょう。
mixed = (1, 'two', 3.0, [4], (5, 5.5))
print(mixed[0]) # 1
print(mixed[1]) # 'two'
print(mixed[2]) # 3.0
print(mixed[3]) # [4]
print(mixed[4]) # (5, 5.5)
上記コードのように、インデックスを使って要素を1つずつ取り出すことができます。
(tupleのスライスについては、専用のレクチャーで解説します。)
tupleの要素数 (len()関数)
tupleの要素数を確認するには、len()
関数を使用します。
mixed = (1, 'two', 3.0, [4], (5, 5.5))
print(len(mixed)) # 5
ネストされたtuple
Pythonのtupleは、要素としてtupleや他の構造体を含めることができます。tupleのような構造体の中に、更に構造体を組み込むことをネストと言います。ネストはどこまでも深くすることができます。
ネストされたtupleの初期化は次のようになります。
tuple_2D = (
(1, 2, 3),
[4, 5, 6]
)
上記コードの"tuple_2D"は、tupleとlistのデータを要素として持っています。
"tuple_2D"の各要素の取り出し方は、listの時と同じで、取り出したい要素番号を順に並べて書いていきます。(例: tuple_2D[n][m]
)
tuple_2D = (
(1, 2, 3),
[4, 5, 6]
)
print(tuple_2D) # ((1, 2, 3), [4, 5, 6])
print(tuple_2D[0]) # (1, 2, 3)
print(tuple_2D[0][1]) # 2
print(tuple_2D[1]) # [4, 5, 6]
print(tuple_2D[1][2]) # 6