リストやタプルを使うと複数の要素をまとめて管理できます.さらに,個々の要素はリストやタプルであっても良いでしょう.リストとタプルの違いは,リストがミュータブルで,タプルがイミュータブルであることです.つまり,リストの要素は書き換えが可能で,要素の追加や削除もできるのに対し,タプルは一旦定義すれば書き換えはできなくなります.
タプルの作成は,要素をカンマで区切り,丸括弧 ( )
で囲う.表示でも丸括弧で囲われています.リストの定義では角括弧 [ ]
であったことに注意しよう.
scores_tuple = (10, 30, 25, 20)
print(scores_tuple)
(10, 30, 25, 20)
あるいは,要素をカンマで区切るだけで,丸括弧 ( )
をつけない場合もタプルが生成されます.この場合も表示は丸括弧で囲われることに注意します.
names_tuple = 'Tanaka', 'Sato', 'Watanabe', 'Takahashi'
print(names_tuple)
('Tanaka', 'Sato', 'Watanabe', 'Takahashi')
リストと同様に,オフセットで要素を指定できます.
names_tuple[0]
'Tanaka'
リストとの大きな違いは要素を書き換えられないこと.「Sato」を「Kato」に書き換えようとするとエラーになります.
names_tuple[1] = 'Kato'
-------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-58-023c8f428e08> in <module>() ----> 1 names_tuple[1] = 'Kato' TypeError: 'tuple' object does not support item assignment
タプルは要素を変更できませんが,リストよりもパフォーマンスが高くなる傾向があるようです.
なお,ただ1つの要素からなるタプルを定義するときには,閉じるカッコの直前にカンマを付与する必要があります.
names_tuple = ('Tanaka',)
type(names_tuple)
tuple
次のようにカンマを付与しなければ異なる解釈がされ,次の例では文字列として定義されることになります.
names_tuple = ('Tanaka')
type(names_tuple)
str