【python3】List とTupleの違い
Pythonを使用していて、List とTupleの違いって???使い分けは???
どっちも他の言語でいうところの配列だよね。。。
と疑問に思ったので、下記を参考にしてまとめました
*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 使おう!!
おやすみいいぃぃぃ