Pythonのタプルはリスト、rangeオブジェクトと同じシーケンス型です。
タプルは不変型であり、一度入れた値を変更することはできません。
今回はPythonのタプルの特徴と基本的な使い方を紹介します。
なお、投稿時に用いる検証はJupyter-Notebookにておこないます。
インストール方法は以下投稿で紹介しておりますので参照してください。
【Python入門】Python3.8.2とJupyter-Notebookのインストール
タプルの作り方
タプルは()(丸括弧)で値を囲むことで作成できます。
a = (1, 2, 3)

丸括弧がなくても作成は可能です。
a = 1, 2, 3

不変型なので、、、
タプルは冒頭で説明した通り不変型です。
値を変えることができず、変更しようとするとTypeErrorが発生します。
a = (1, 2, 3)
a[0] = 4
TypeError: ‘tuple’ object does not support item assignment

もちろん、pop,appendも使用することができません。
a = (1, 2, 3)
a.pop()
AttributeError: ‘tuple’ object has no attribute ‘pop’
a = (1, 2, 3)
a.append(4)
AttributeError: ‘tuple’ object has no attribute ‘append’

要素が0個のタプル、1個のタプルの作成
タプルの要素が0個、1個でも作成することができます。
0個の場合
a = ()

このようにイコールの後ろに丸括弧をつけてあげれば良いわけです。
1個の場合
a = (1, )

要素の後ろにカンマをつけてあげることで
1個だけ要素が入ったタプルを作成することができます。
(カンマないとタプルではなくint型の変数として認識されます。)
タプルのアンパッキングについて
1個1個の要素を別の変数にアンパッキングしていくには以下のようにします。
a = (1, 2, 3)
b, c, d = a

ただし、アンパッキングには条件があります。
タプルに含まれる要素の数と左辺で指定する変数の数を等しくしないといけません。
例えば左辺の数を一つ減らして実行するとValueErrorが出力されます。
a = [1, 2, 3]
b, c = a
ValueError: too many values to unpack (expected 2)

タプルに含まれるリストの要素は変更可能か
タプルの中にリストを含めることができます。
a = ((1,2,3), [4,5,6])

リストは変更可能型であり、タプルの不変型と違い、要素を変えることができます。
タプルに入っているリストを変更可能か試してみましょう。
a = ((1,2,3), [4,5,6])
a[1][1] = 4

変更することができました。
コメント