記事一覧へ戻る 本の順番で続きを読む

リスト・タプル・セット - コレクション型の基本

Python3初級 | 2026/02/18 15:36

リスト・タプル・セット

リスト(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
順序 あり あり なし
変更 可能 不可能 可能
重複 可能 可能 不可能
インデックス 可能 可能 不可能
記法 [] () {}

まとめ

  • リスト: 順序があり変更可能。最もよく使うコレクション
  • タプル: 変更不可能。座標や定数データに適する
  • セット: 重複なし。集合演算や高速な存在チェックに使う