Python|セット(set)型の特徴と基本操作

1. はじめに

Pythonにはリストや辞書と並んで「セット型(set型)」という便利なデータ構造があります。
集合(set)は数学の「集合」と同じように、重複しない要素の集まりを表現するのに使われます。
本記事では、Pythonのset型の特徴と基本操作について、初心者でも理解しやすいように丁寧に解説していきます。

この記事を読むことで、setの基本構文、よくある使い方、実務で役立つ応用例、さらには注意点まで一通り理解できます。

 

2. Pythonのセット(set)型とは?

2-1. set型の特徴と用途

Pythonのset型は、順序を持たず、重複しない要素の集合です。重複を自動的に排除するため、重複チェックや差分の取得、集合演算に非常に便利です。

2-2. setの基本的な作成方法

# setの作成(リストから変換)
fruits = set(["apple", "banana", "apple", "orange"])
print(fruits)

実行結果:

{'banana', 'apple', 'orange'}

重複していた”apple”が1つにまとめられているのがわかります。

2-3. 空のsetを作るときの注意

# 空のsetは set() を使う
empty_set = set()
print(type(empty_set))  # <class 'set'>

# {} は空の辞書になるので注意
not_set = {}
print(type(not_set))  # <class 'dict'>

 

3. よくある使い方・応用例

3-1. リストの重複を取り除く

リストに重複するデータがあるとき、set型に変換するだけで簡単に重複を除去できます。

# リストの重複削除
nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums)

実行結果:

[1, 2, 3, 4, 5]

3-2. setを使った集合演算

set型は集合演算に強く、次のような操作ができます。

  • 和集合(union)
  • 積集合(intersection)
  • 差集合(difference)
  • 対称差(symmetric_difference)
a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

print(a | b)  # 和集合
print(a & b)  # 積集合
print(a - b)  # 差集合
print(a ^ b)  # 対称差

実行結果:

{1, 2, 3, 4, 5, 6}
{3, 4}
{1, 2}
{1, 2, 5, 6}

3-3. データの存在チェックにも便利

setはハッシュテーブルで管理されているため、検索が高速です。大量データからの検索処理に活用できます。

names = {"Alice", "Bob", "Charlie"}
print("Bob" in names)     # True
print("David" in names)   # False

 

4. 注意点・エラー対策

4-1. setは順序を持たない

setの要素は順番が保証されないため、インデックス指定はできません。

my_set = {"a", "b", "c"}
# print(my_set[0])  # エラー:'set' object is not subscriptable

4-2. ミュータブルな型(リストなど)は要素にできない

setの要素にはイミュータブル(変更不可)な型しか使えません。リストや辞書を要素にしようとするとエラーになります。

# リストをsetの要素にするとTypeError
invalid_set = set()
# invalid_set.add([1, 2])  # TypeError: unhashable type: 'list'

4-3. 同じ要素の追加は無視される

setに既に存在する要素を追加しても、重複しないため何も変化しません。

s = {"python", "java"}
s.add("python")  # 重複なので変化なし
print(s)

実行結果:

{'java', 'python'}

 

5. まとめ

今回は、Pythonのset(セット)型の特徴と基本操作について解説しました。

  • setは重複のない要素の集合を表す
  • リストから重複を除去したいときに便利
  • 和集合・積集合・差集合などの集合演算ができる
  • 順序を持たない点に注意が必要

実務では「データの重複チェック」や「高速な存在判定」、「リスト同士の差分比較」などの場面で活用できます。
Python初心者の方は、まずリストとの違いを意識しながら使ってみるのがおすすめです。

今後は frozenset(変更不可のセット)も合わせて学ぶと、さらに理解が深まるでしょう。

タイトルとURLをコピーしました