リスト(list)とは
リストは順序付きで要素の追加・削除が可能な可変コレクションです。多くの場合、順序を保ったデータの保持や逐次処理に適しています。部分列を取得するスライスや append/pop といった操作を覚えておくと便利です。
# リスト例 a = [1, 2, 3] a.append(4) print(a[1:4]) # スライスの利用
タプル(tuple)とセット(set)
タプルは順序付きで変更不可のコレクションです。固定データや辞書のキーとして使いたい値をまとめるときに便利です。一方、セットは順序を持たず重複を許さないコレクションで、集合演算(和・差・積)や重複除去に向いています。用途に応じて不変性や重複排除の性質を利用してください。
# タプルとセットの例 t = (1, 2, 3) s = {1, 2, 3} s.add(4)
辞書(dict)の使い所
辞書はキーと値の対応を保持するマッピングです。キーにはイミュータブルな型(文字列や数値、タプルなど)を使い、get や items を使った安全な参照や反復処理を行います。高速なキー検索が必要な場面では最適な選択です。
# 辞書の例 d = {"apple": 100, "banana": 150} print(d.get("grape", 0)) for k, v in d.items(): print(k, v)
内包表記(Comprehensions)について
内包表記は簡潔にコレクションを生成できる記法です。短く単純な変換やフィルタリングには有効ですが、複雑な処理を無理に1行で書くと可読性が落ちます。適切な場面で使い分けてください。
# リスト内包表記の例 squares = [x * x for x in range(10)] d = {x: x * x for x in range(5)}
ミュータビリティとコピー
リストや辞書といった可変オブジェクトは参照渡しになるため、意図せず元のオブジェクトが変更されるケースがあります。浅いコピーと深いコピーの違いを理解し、ネストされた構造を扱う際は copy.deepcopy を検討してください。
# コピーの例 import copy a = [[1,2], [3,4]] b = a.copy() # 浅いコピー c = copy.deepcopy(a) # 深いコピー
使い分けと性能上の注意
順序と変更性が重要なら list、固定データやハッシュ可能性が必要なら tuple、重複排除や集合演算が目的なら set、キーによる高速参照が必要なら dict を選んでください。大規模データを扱う場合は操作コストやメモリを意識してデータ構造を選定することが重要です。
構造 | 用途の指針 |
---|---|
list | 順序付きで要素の追加・削除がある場合 |
tuple | 不変のデータや辞書のキーに使う場合 |
set | 重複排除や集合演算が必要な場合 |
dict | キーで高速に値を参照したい場合 |