リスト・タプル・セット
リスト(list)
リストは順序付きで変更可能なコレクションです。
# リストの作成
fruits = ["りんご", "みかん", "ぶどう"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14] # 異なる型も混在可能
empty = []
# 要素へのアクセス
print(fruits[0]) # りんご
print(fruits[-1]) # ぶどう
print(fruits[1:3]) # ['みかん', 'ぶどう']
リストの主要操作
fruits = ["りんご", "みかん"]
# 追加
fruits.append("ぶどう") # 末尾に追加
fruits.insert(1, "バナナ") # 位置を指定して挿入
fruits.extend(["もも", "梨"]) # 複数追加
# 削除
fruits.remove("みかん") # 値を指定して削除
popped = fruits.pop() # 末尾を取り出し
del fruits[0] # インデックスで削除
# 検索
print("りんご" in fruits) # True or False
print(fruits.index("ぶどう")) # インデックスを返す
print(fruits.count("りんご")) # 出現回数
# ソート
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort() # 昇順(元のリストを変更)
numbers.sort(reverse=True) # 降順
sorted_nums = sorted(numbers) # 新しいリストを返す
# その他
print(len(fruits)) # 要素数
fruits.reverse() # 逆順にする
fruits.clear() # 全削除
リストのコピー
original = [1, 2, 3]
# 浅いコピー
copy1 = original.copy()
copy2 = original[:]
copy3 = list(original)
# 注意:= は参照のコピー(同じオブジェクト)
ref = original
ref.append(4)
print(original) # [1, 2, 3, 4] ← 元も変わる!
タプル(tuple)
タプルは順序付きで変更不可能なコレクションです。
# タプルの作成
point = (10, 20)
colors = ("赤", "青", "緑")
single = (42,) # 要素が1つの場合はカンマ必須
empty = ()
# 要素へのアクセス(リストと同じ)
print(colors[0]) # 赤
print(colors[1:]) # ('青', '緑')
# 変更はできない
# colors[0] = "黄" # TypeError!
# アンパッキング
x, y = point
print(x) # 10
print(y) # 20
# 複数の戻り値に使用
def get_min_max(numbers):
return min(numbers), max(numbers)
lo, hi = get_min_max([3, 1, 4, 1, 5])
print(f"最小: {lo}, 最大: {hi}")
タプルを使う場面
- 変更されたくないデータ(座標、RGB色など)
- 辞書のキーとして使う(リストはキーにできない)
- 関数の複数戻り値
セット(set)
セットは順序なし・重複なしのコレクションです。
# セットの作成
fruits = {"りんご", "みかん", "ぶどう"}
numbers = {1, 2, 3, 2, 1} # 重複は自動的に除去
print(numbers) # {1, 2, 3}
empty = set() # {} は空の辞書になるので注意
# 追加・削除
fruits.add("バナナ")
fruits.discard("みかん") # なくてもエラーにならない
fruits.remove("ぶどう") # なければKeyError
# 存在チェック(高速)
print("りんご" in fruits) # True
セットの集合演算
a = {1, 2, 3, 4, 5}
b = {4, 5, 6, 7, 8}
# 和集合
print(a | b) # {1, 2, 3, 4, 5, 6, 7, 8}
# 積集合
print(a & b) # {4, 5}
# 差集合
print(a - b) # {1, 2, 3}
# 対称差(どちらか一方にだけある要素)
print(a ^ b) # {1, 2, 3, 6, 7, 8}
重複除去に便利
names = ["太郎", "花子", "太郎", "次郎", "花子"]
unique_names = list(set(names))
print(unique_names) # ['太郎', '花子', '次郎'](順序は保証されない)
コレクション型の比較
| 特徴 | list | tuple | set |
|---|---|---|---|
| 順序 | あり | あり | なし |
| 変更 | 可能 | 不可能 | 可能 |
| 重複 | 可能 | 可能 | 不可能 |
| インデックス | 可能 | 可能 | 不可能 |
| 記法 | [] | () | {} |
まとめ
- リスト: 順序があり変更可能。最もよく使うコレクション
- タプル: 変更不可能。座標や定数データに適する
- セット: 重複なし。集合演算や高速な存在チェックに使う