tapitapi’s blog

1日1杯タピオカ!エンジニア

【python3】List とTupleの違い

Pythonを使用していて、List とTupleの違いって???使い分けは???

どっちも他の言語でいうところの配列だよね。。。

と疑問に思ったので、下記を参考にしてまとめました

 

realpython.com

 

 

*Listの特徴

見た目はこんな感じ ['foo', 'bar', 'baz', 'qux']

序列的(順番がある)
どんなオブジェクトでもListに含むことができる
indexでアクセスできる
ネスト構造可能
ミュータブル(値の再設定可能)
動的

 

*Tuple

Listとほぼ一緒

見た目は[]の代わりに()を使用する

イミュータブル(値の再設定不可)

 

下記で具体的にみていきます

 

*序列的

順番が違うと、別のものとして認識

[1, 2, 3, 4] == [4, 1, 3, 2]
>>False

 

*どんなオブジェクトでもListに含むことができる

下記みたいに、違う型のオブジェクトも入れてOK

[21.42, 'foobar', 3, 4, 'bark', False, 3.14159]


*indexでアクセスできる

index(0から番号)がふられているので、indexでアクセス可能

a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']

a[0]

>>'foo'

a[-1]

>>'corge'


*ネスト構造可能

['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']


*ミュータブル(値の再設定可能)

a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a
['foo', 'bar', 'baz', 'qux', 'quux', 'corge']

a[2] = 10
a[-1] = 20
>>> a
['foo', 'bar', 10, 'qux', 'quux', 20] 


*動的

あとでサイズを増やせる

a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']

a[2:2] = [1, 2, 3]
a += [3.14159]
>>> a
['foo', 'bar', 1, 2, 3, 'baz', 'qux', 'quux', 'corge', 3.14159]

 

*tupleはイミュータブル (値を再設定しようとすると太文字エラー)

t = ('foo', 'bar', 'baz', 'qux', 'quux', 'corge')
t[2] = 'Bark!'

>>Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
t[2] = 'Bark!'
TypeError: 'tuple' object does not support item assignment

 

まとめ

あとで値を変更されたくない時はTuple 使おう!!

 

おやすみいいぃぃぃ