Python set()作成と活用方法5つ

Python set()組み込み関数は、集合を作成するために使用され、これにより重複を許さないデータ保存や様々な演算を簡単に処理することができます。Pythonには様々なデータ構造が存在します。その中で、setは集合を表すデータ型であり、数学で扱う集合と似た概念です。今回はset()の使い方について詳しく見ていきましょう。

Python set()の特徴

setデータ型は次のような主要な特徴を持っています。

  • 重複を許さない: 同じ値が複数ある場合、一つだけ保存されます。例えば、[1, 2, 2, 3]をsetに変換すると、{1, 2, 3}になります。
  • 順序がない: リストとは異なり、要素が保存される順序がないため、インデックスやスライシングができません。
  • 変更可能: setに新しい値を追加したり、既存の値を削除したりすることができます。

これらの特徴のおかげで、setは固有の値を保存したり、素早く検索や重複の削除を行う際に役立ちます。

set作成方法

Pythonでsetを作成する方法は2つあります。1つはset()関数を使用する方法、もう1つは中括弧{}を使用する方法です。

Python
set([1, 2, 3, 4, 5])
# or
{1, 2, 3, 4, 5}
図1. Python set作成方法2つ
図1. Python set作成方法2つ

ただし、空のsetを作成する際は必ずset()関数を使用しなければなりません。中括弧{}を使用すると、setではなく辞書が作成されます。

Python
type(set())
type({})
図2. Python set: 空のsetを作成する際にはset()関数を使用すること
図2. Python set: 空のsetを作成する際にはset()関数を使用すること

set活用方法

setは主に重複の削除、交差集合、和集合などの集合演算を処理する際に使用されます。各演算はPythonで簡単なメソッドや演算子を使って簡単に行えます。

重複削除

リストや他のシーケンスデータ型から重複した値を削除する際にsetを利用できます。

Python
my_list = [1, 2, 2, 3, 2, 3, 5, 4, 4, 5]
my_set = set(my_list)
print(my_set)

setを使用して、リストの重複した要素を簡単に削除できます。

図3. Python set: リストの重複した要素を削除
図3. Python set: リストの重複した要素を削除

和集合 (Union)

2つ以上の集合を1つにまとめる演算です。Pythonでは|演算子またはunion()メソッドを使用して和集合を求めることができます。

Python
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

result = set1 | set2
print(result)

result = set1.union(set2)
print(result)
図4. Python set: |演算子またはunion()メソッドで和集合を求める
図4. Python set: |演算子またはunion()メソッドで和集合を求める

交差集合 (Intersection)

2つの集合に共通する要素を見つける演算です。&演算子またはintersection()メソッドを使用します。

Python
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

result = set1 & set2
print(result)

result = set1.intersection(set2)
print(result)
図5. Python set: &演算子またはintersection()メソッドで交差集合を求める
図5. Python set: &演算子またはintersection()メソッドで交差集合を求める

差集合 (Difference)

ある集合から他の集合の要素を取り除いた結果を得る演算です。-演算子またはdifference()メソッドを使用します。

Python
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

result = set1 - set2
print(result)

result = set1.difference(set2)
print(result)
図6. Python set: -演算子またはdifference()メソッドで差集合を求める
図6. Python set: -演算子またはdifference()メソッドで差集合を求める

対称差集合 (Symmetric Difference)

2つの集合で共通しない要素だけを含む演算です。^演算子またはsymmetric_difference()メソッドを使用します。

Python
set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1 ^ set2
print(result)

result = set1.symmetric_difference(set2)
print(result)
図7. Python set; ^演算子またはsymmetric_difference()メソッドで対称差集合を求める
図7. Python set; ^演算子またはsymmetric_difference()メソッドで対称差集合を求める

注意事項

setは順序のないデータ型のため、リストで使用するインデックスやスライシングといった方法を使用することはできません。例えば、my_set[0]のように最初の要素にアクセスしようとするとエラーが発生します。set内の要素を巡回するにはforループを使用する必要があります。

Python
my_set = {1, 2, 3}
for element in my_set:
    print(element)

また、setの要素は変更不可能(immutable)なデータ型である必要があります。したがって、リストや辞書といった可変オブジェクトをsetの要素として使用することはできません。

まとめ

Pythonのset()は、重複データを管理したり、集合演算を迅速かつ簡単に処理できる便利なツールです。和集合、交差集合、差集合など、様々な集合演算をサポートしており、特に重複を削除したり、固有の値を見つける際に強力な性能を発揮します。setを活用して、より効率的なコードを作成できるよう練習してみましょう。

リファレンス

関連ポスト

コメントする