セット: 重複なしコレクション
重複排除・高速検索・集合演算。
set
重複なし・順序なしのコレクション。
和集合
両方の要素を含む。
積集合
共通する要素のみ。
セットとは?
リストから重複を取り除きたいときや、「AにもBにもいる人(共通部分)」、「AにはいるけどBにはいない人(差分)」といった集合演算を行いたいときに最強のツールです。検索も辞書と同じく爆速(O(1))です。
# セットの作成fruits = {"apple", "banana", "cherry"}empty = set() # {} は辞書になる
# 追加・削除fruits.add("date")fruits.remove("banana") # なければ KeyErrorfruits.discard("fig") # なければ何もしない
# 存在確認 O(1)if "apple" in fruits: print("Found!")
# リストから重複排除unique = list(set([1, 2, 2, 3, 3, 3])) # [1, 2, 3]Bad
# ❌ Bad: リストで重複チェックif item not in my_list: # O(n) my_list.append(item)Good
# ✅ Good: セットで O(1)my_set.add(item) # 重複は自動排除集合演算
a = {1, 2, 3}b = {2, 3, 4}
# 和集合a | b # {1, 2, 3, 4}a.union(b)
# 積集合a & b # {2, 3}a.intersection(b)
# 差集合a - b # {1}a.difference(b)
# 対称差(どちらか一方のみ)a ^ b # {1, 4}a.symmetric_difference(b)
# 部分集合チェック{1, 2}.issubset({1, 2, 3}) # True{1, 2, 3}.issuperset({1, 2}) # True Tip: 演算子 (|, &, -) とメソッドは同じ結果。
合格ライン
セットで重複排除できる
和・積・差集合を使える
演習課題
課題1: 重複排除
セットを使ってリストの重複を排除してください。
課題2: 集合演算
和集合、積集合、差集合を計算してください。