🐍

【Python】リストとタプルって何が違うん?

2023/12/21に公開

はじめに

Pythonには配列データとして、リスト(List)とタプル(Tuple)がある。
初学者の僕にとっては、結局何が違うんこいつら、、、って感じです。笑
そこで初学者の僕なりに、”何が違うのか”、”どうやって使い分けるのか”についてまとめていきたいと思います。

リストとタプルの違いを一言で

それぞれの違いを一言でまとめると、

  • リスト:動的な配列。値や要素数の変更が可能。
  • タプル:静的な配列。値や要素数は固定で変更不可。
    です。
    とりあえずこれくらい理解していれば大丈夫そうな気がしますが、もっと深ぼって書いていきたいと思います。

リストについて

リストは動的な配列なので以下のように要素の変更・追加等を行うことができます。

list = [5, 8, 1, 3, 2, 6]
print(list)
#[5, 8, 1, 3, 2, 6]
list[2] = 10
print(list)
#[5, 8, 10, 3, 2, 6]
print(len(list))
#6
list.append(32)
print(list)
#[5, 8, 10, 3, 2, 6, 32]
print(len(list))
#7

タプルについて

タプルはリストと違い、一度作ると、変更や追加ができません。

tuple = (1, 2, 3, 4)
tuple[0] = 5
#TypeError: 'tuple' object does not support item assignment

以下のように、タプル同士を結合して新たなタプルを作ることはできます。

tuple1 = (0, 1, 2)
tuple2 = (3, 4, 5, 6)
print(tuple1 + tuple2)
#(0, 1, 2, 3, 4, 5, 6)

リストとタプルの使い分け

いくつかのデータを例に、どのように使い分けるか考えていきます。

データ リストorタプル 理由
素数の最初の20個 タプル データが変化しないから
ある人の年齢、身長、体重 リスト 値が変わる可能性があるから
あるゲームの結果一覧 タプル 一度出た結果は変わらないから
ユーザーへのアンケートの選択肢 タプル 選択肢が変わることはないから
プログラミング言語の名前 リスト データが増える可能性があるから

他にもたくさんの例が考えられますが、「要素が変わる可能性があるか?」を基準に使い分ければ、問題なさそうです。

まとめ

  • 変更の可能性があるデータ → リスト
  • 変更の可能性がないデータ → タプル
    前述した通り、「要素が変わる可能性があるか?」を基準に使い分けていけば問題なさそうです。

Discussion