Python始めたての頃につまずいた『リスト』と『タプル』の違いについてお話します。
元々C言語を初期に習っていた私は、配列に色んな種類があることに最初戸惑いました。
それぞれの仕様を理解すると、無駄に時間を取られたりしなくなるので、ぜひ知ってほしいです。
Pythonには、『リスト』と『タプル』というよく似たデータ管理の方法があります。
しかし、それらの要素の書き換え
やコードの記述方法
に微妙に違いがありますので、その違いについて説明していきたいと思います。
リスト(list)とは
複数の要素を順番に並べて格納するためのデータ型です。
記述のしかた
$ a = [1,2,3,4,5]
$ a
[1,2,3,4,5]
このように、[]
の中に要素を並べて記述をします。
要素の扱い方
これらの要素は書き換えすることができます。
$ a = [1,2,3,4,5] #リストを定義
$ a[1] #2番目の要素を表示
2
$ a[1]="two" #2番目の要素を"two"に書き換える
$ a
[1, 'two', 3, 4, 5]
タプル(tuple)とは
基本的にリストと同様です。
しかし、最初に述べたように、要素の扱い方やコードの記述方法に違いがあります。
記述のしかた
$ b = (1,2,3,4,5)
$ b
(1,2,3,4,5)
先ほどのリストでは[]
でしたが、今度は()
の中に要素が記述されている点に注意です。
要素の扱い方
リストと同様に、要素の書き換えをしてみましょう。
$ b=(1,2,3,4,5) #タプルを定義
$ b
(1, 2, 3, 4, 5)
$ b[1] #2番目の要素を表示
2
$ b[1]="two" #2番目の要素を"two"に書き換える
Traceback (most recent call last):
File "<ipython-input-9-6d86f5f6feb4>", line 1, in <module>
b[1]="two"
TypeError: 'tuple' object does not support item assignment
やってみましたが、エラーが発生してしまいました。
このように、タプルは要素の書き換えができません。
タプルを連結して新しいタプルを作ることはリストと同様にできます。
しかし、タプル自体を変えているわけではないので可能なわけです。
$ b2 = b + (11,12) #タプル同士を連結
$ b2
(1, 2, 3, 4, 5, 11, 12)
なぜ書き換えができないのか
リストに比べて自由度の低いタプルですが、書き換えができない利点があるから存在しています。
変更してはいけない重要なデータを扱っている時、タプルに入れておけば変更される心配はありません。
まとめ
ちょっとした違いですが、把握していないとツボにはまってしまいます。しかし、知っておけば問題ないでしょう。
ちなみに、配列の種類はもっとあります。リスト型、タプル型、配列型、辞書型、集合型、array型の5つもあります。これだけあると使い方を覚えるのは難しいので、型の違いによってエラーが出る可能性があるということだけは心に留めておいてください。そして、もし原因不明のエラーが出たら、型の仕様の違いを疑ってみる。それでいいと思います。
最後まで読んでいただきありがとうございました。
何か誤りがありましたら、遠慮なくご指摘ください。