PYTHON MEBY

Pythonでセットの積集合・和集合・差集合を求める(&, |, -, intersection, union, difference)

この記事では、Pythonのset(集合)を用いて、積集合、和集合、差集合を求める方法を解説します。それぞれの演算子とメソッド、そして具体的なコード例を示します。

目次

セットの定義

Pythonで集合を扱うには`set()`関数を使用します。要素は重複せず、順序も考慮されません。

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

上記のように、波括弧`{}`で要素を記述するか、`set()`関数を用いてリストなどから集合を作成できます。

set3 = set([1, 2, 2, 3])  # 重複要素は一つになる
print(set3) # 出力: {1, 2, 3}

空の集合を作成するには`set()`を括弧なしで呼び出します。

empty_set = set()
print(empty_set) # 出力: set()

積集合(&、intersection())

積集合は、両方の集合に共通する要素のみを含む集合です。`&`演算子と`intersection()`メソッドの両方で求められます。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1 & set2
print(intersection_set) # 出力: {3}
intersection_set = set1.intersection(set2)
print(intersection_set) # 出力: {3}

どちらの方法でも同じ結果が得られます。

和集合(|、union())

和集合は、両方の集合に含まれるすべての要素を含む集合です。`|`演算子と`union()`メソッドで求められます。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2
print(union_set) # 出力: {1, 2, 3, 4, 5}
union_set = set1.union(set2)
print(union_set) # 出力: {1, 2, 3, 4, 5}

どちらの方法でも同じ結果が得られます。

差集合(-、difference())

差集合は、最初の集合に含まれるが、2番目の集合には含まれない要素を含む集合です。`-`演算子と`difference()`メソッドで求められます。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1 - set2
print(difference_set) # 出力: {1, 2}
difference_set = set1.difference(set2)
print(difference_set) # 出力: {1, 2}

どちらの方法でも同じ結果が得られます。順序は重要です。`set2 - set1`とすると`{4, 5}`となります。

対称差集合(^、symmetric_difference())

対称差集合は、両方の集合に含まれる要素のうち、一方の集合のみに含まれる要素からなる集合です。`^`演算子と`symmetric_difference()`メソッドで求められます。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # 出力: {1, 2, 4, 5}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 出力: {1, 2, 4, 5}

どちらの方法でも同じ結果が得られます。

サンプルコード

以下のコードは、上記のすべての集合演算を一度に実行する例です。

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(f"set1: {set1}")
print(f"set2: {set2}")
print(f"積集合 (set1 & set2): {set1 & set2}")
print(f"積集合 (set1.intersection(set2)): {set1.intersection(set2)}")
print(f"和集合 (set1 | set2): {set1 | set2}")
print(f"和集合 (set1.union(set2)): {set1.union(set2)}")
print(f"差集合 (set1 - set2): {set1 - set2}")
print(f"差集合 (set1.difference(set2)): {set1.difference(set2)}")
print(f"差集合 (set2 - set1): {set2 - set1}")
print(f"差集合 (set2.difference(set1)): {set2.difference(set1)}")
print(f"対称差集合 (set1 ^ set2): {set1 ^ set2}")
print(f"対称差集合 (set1.symmetric_difference(set2)): {set1.symmetric_difference(set2)}")

実行すると、それぞれの集合演算の結果が確認できます。

関連記事