サイトアイコン GAMEWORKS LAB

Python基礎 — データ構造

リスト(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 キーで高速に値を参照したい場合
モバイルバージョンを終了