python

【python】tuple(タプル型)

タプルはシーケンス型の1つで、リストと良く似ているよ

タプルとリストの違い

要素の変更ができるかどうかにあります。タプルは生成後、要素を変更することができません

lst = [1, 2, 3]
print(lst)#[1, 2, 3]

# 0番目の要素を更新する
lst[0] = 0
print(lst)#[0, 2, 3]

tp = (1, 2, 3)
print(tp)

# 要素を書き換えるとエラーが発生する
tp[0] = 0  #(1, 2, 3)
<ipython-input-7-544b816ace13> in <module>()
3
4 # 要素を書き換えるとエラーが発生する
—-> 5 tp[0] = 0
TypeError: ‘tuple’ object does not support item assignment

タプル型は要素を変更できないのに何に役に立つか

ディクショナリのキーや、セットの要素にすることができます。setはリストを要素として登録することができません。なぜなら、リストをsetの要素として登録できるようにしてしまうと、他の要素と同じになってしまうとセットの要素が重複しないという条件を満たされなくなってしまうためタプルは変更ができないので、この制限を受けなくて済みます。同じ理由で、リストをディクショナリのキーとして登録することができません。登録を許すと重複したキーが登録できてしまうのでできなくっています。

タプル型の宣言方法

この丸括弧は省略することもできます
要素が1つのタプルを作る時は行末にカンマを残す 要素数が0個のタプルを作るときには丸括弧が必要になります。

lst = [1, 2, 3]  # リスト
print(lst)#[1, 2, 3]

tp1 = (1, 2, 3)  # タプル
tp2 = 1, 2, 3
print(tp1)#(1, 2, 3)
print(tp2)#(1, 2, 3)

# intの1
one = 1
print(one)#1

# 要素数が1のタプル(要素はintの1)
tp = 1,
print(tp)#(1,)

empty = ()
print(empty)#()

tp3 = tuple(lst)  # リストからタプルを作ることもできます
print(tp3)#(1, 2, 3)

要素数を取得する

要素数を取得する len() 関数はタプルにも利用できます。

tp = 1, 2, 3
print(len(tp))#3

 

要素を取得する

tp = 1, 2, 3
# 1番目の要素を取り出す
print(tp[1])#2

シーケンスのアンパックと呼ばれる方法で取り出す
#シーケンス
a, b, c = tp
print(a)#1
print(b)#2
print(c)#3