これら 3 つは Python で最もよく使われるコレクションであり、それぞれ異なるニーズに適しています。主な違いは、可変性、順序、そして要素へのアクセス方法です。
List — 順序付きのミュータブルなシーケンス
python
fruits = [, , ]
fruits[]
fruits.append()
fruits[] =
(fruits)
list は、項目の追加・削除・並べ替えなど、変化する順序付きコレクションに使います。
point = (3, 4)
point[0] # 3 — index access (like a list)
point[0] = 5 # ❌ TypeError — tuples are IMMUTABLE
x, y = point # unpacking — common use
tuple は、変化すべきでない固定的な値のグループ、たとえば座標、レコード、複数の値を返す関数の戻り値などに使います。イミュータブルであるため、tuple は dict のキーにもでき、メモリ効率もわずかに優れています。
user = {"name": "Ann", "age": 30}
user["name"] # "Ann" — access by KEY, not index
user["email"] = "[email protected]" # mutable — add/update
user.get("phone", "N/A") # safe access with a default
for k, v in user.items(): ... # iterate key-value pairs
dict は、名前による高速な検索(O(1))のためにキーを値へマッピングする用途に使います。Python 3.7 以降、dict は挿入順序を保持します。
List Tuple Dict
Mutable? yes no yes
Ordered? yes yes yes (insertion, 3.7+)
Access by index index key
Syntax [1, 2] (1, 2) {"k": v}
Use for changing seq fixed record key→value lookup
Dict key? no yes no
適切なコレクションを選ぶことは、正しさ、パフォーマンス、意図に影響する、Python における基礎的で日常的な判断です。
ミュータブルで順序付きのデータには list、固定的でイミュータブルなレコード(および dict のキー)には tuple、キーによる高速検索には dict を使います。適切なものを使うことで意図が伝わり(tuple は「これは変化しない」と示します)、適切なパフォーマンス特性(dict の O(1) 検索 対 list の O(n) 探索)が得られます。
これらを誤用すること(たとえば dict 検索が適切な場面で list を走査するなど)は、遅く分かりにくいコードのよくある原因です。