タプルは、リストと同じように、複数のデータを順番に格納するために使われます。
使い方もリストとほとんど同じですが、タプルは、一度設定したデータを変えることができないという特徴があります。
つまり、一度定義したら、後から変更したくないデータを入れる時はタプルを使うと良いでしょう。
タプルの作り方
タプルは、データをかっこ()(英語ではparenthesisと言います)で囲むことで作ることができます。それぞれのデータはコンマで区切ります。
また、タプルには、リストと同じく、整数、浮動小数点数、文字列などのデータを入れることができます。
なお、()はオプションで、()をつけなくてもPythonはタプルと認識してくれるのですが、予想をしない動きをすることもあるので、タプルを定義する時はかならず()をつけるようにしましょう。
実際に、いくつかタプルを作ってみます。
コードlist = (1)
list = (1, 2, 3)
list = (1, 10.15, 'apple')
更に、タプルは入れ子の構造にすることもできます。実際に入れ子になっているタプルを見てみましょう。
コードlist = (1, (2, ), ('orange', ), (1, 2, 3))
データが一つの場合、コンマをつけなければいけない
タプルは、データが一つの場合はコンマをつけて、タプルであることをPythonに認識させる必要があります。
つまり、Pythonがタプルかどうかを判断する条件は、()ではなく、コンマがあるかどうかなのです。
具体的な例で見ていきましょう。
コードnumber = (1, 2)
print(number)
print(type(number))
アウトプット(1,2)
<class 'tuple'>
このコードでは、2つのデータがコンマで区切られていますので、タプルとして認識されました。
コードnumber = (1 + 2)
print(number)
print(type(number))
アウトプット3
<class 'int'>
このコードでは、1+2の結果である3numberに代入されていますが、3のあとにコンマがないので整数として認識されています。
コードnumber = ('number')
print(number)
print(type(number))
アウトプットnumber
<class 'srt'>
このコードでも、中に入っているデータが'number'と一つだけあり、コンマがついていないので文字列として認識されています。
タプルからデータを取り出したい場合
次に、タプルからデータを取り出す方法を見ていきましょう。
タプルからデータを取り出すには、リストと同じく[]を使います。
具体例で確認していきましょう。
コードtuple = ('apple', 'orange', 'grape', 'kiwi')
print(tuple[0])
アウトプットapple
tuple[0]という形で、番号を使ってタプルの中のデータを取り出すことができました。
また、タプルに入っているデータ以上の数字を取り出そうとすると、エラーが出てしまうのもリストと同じです。
コードprint(tuple[100])
アウトプットIndexError: tuple index out of range
index(番号)がタプルの範囲外ですよ。というエラーが表示れてしまいました。
また、インデックスの指定は必ず整数でなければいけません。これもリストと同じです。
入れ子になっているリストで、データを指定する方法
次に、入れ子になっているリストでデータを指定する方法について見ていきましょう。
入れ子になっているリストでデータを指定する方法もリストと同じく、[]を2回使います。これも具体例を見た方がイメージが湧きやすいと思いますので、具体例で見ていきましょう。
tuple = (1, 2, 3, (10, 11, 12))
print(tuple[3][0])
10
タプルのスライス
ここでは、タプルのスライスについてお伝えします。
タプルのスライスも、リストと同じように扱うことができます。
具体例で見ていきましょう
tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(tuple[5:])
(5, 6, 7, 8, 9, 10)
タプル内の要素の変更
タプルは中身を変えることができませんので、変えようとするとエラーが出ます。
tuple = (1, 2, 3, ['dog', 'pig'])
tuple[0] = 2
TypeError: 'tuple' object does not support item assignment
タプル型には、要素の割当をすることはできません。というエラーが出てしまいました。
タプルは、一度データを作ると後から変えることはできません。tuple[0]に2という新しいデータを割り当てようとしたため、エラーが出てしまったのです。
しかし、要素自体が変更可能である場合、要素を変えることができます。
以下のコードでは、['dog', 'pig']はリストですので、中身を変えることができます。
tuple = (1, 2, 3, ['dog', 'pig'])
tuple[3][0] = ['cat']
print(tuple)
(1, 2, 3, ['cat', 'pig']
なお、ミュータブルとイミュータブルの詳しい解説については、ミュータブルといミュータブルという記事に詳しくまとめていますので、深く理解したい方はぜひ読んでみて下さい。
タプルのまとめ
(1) リストと同じように使うことができる。
(2) 違いは、データを更新することができるか。タプルは一度設定したデータを変えることはできない。
タプルを学んだ後は
タプルを学んだ後は、タプルに似たデータである集合について学びましょう。