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)}")
実行すると、それぞれの集合演算の結果が確認できます。