Python で差集合を取得する

Muhammad Waiz Khan 2023年10月10日
  1. Python で集合の差分を見つけるには set.symmetric_difference() メソッドを使用する
  2. Python の for ループを使ってセットの差分を求める
  3. XOR 演算子を用いた Python でセットの差分を見つける
Python で差集合を取得する

このチュートリアルでは、Python で 2つの集合の違いを見つけるための様々な方法を説明します。差分とは、2つの集合の間で共通していない要素を意味します。

例えば:

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([2, 3, 6, 8])

この 2つの集合の差は 1,4,5,8 であるべきです。

Python で集合の差分を見つけるには set.symmetric_difference() メソッドを使用する

set.symmetric_difference() メソッドは別の集合を入力として受け取り、その差を返します。以下の例では、set.symmetric_difference() を用いて両方の集合に共通しない要素を取得し、必要な差集合を取得する方法を説明します。

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([2, 3, 6, 8])

diff_set = set1.symmetric_difference(set2)
print(diff_set)

出力:

{1, 4, 5, 8}

Python の for ループを使ってセットの差分を求める

2つの集合の違いを見つけるには、for ループを使って両方の集合を反復処理し、もう一方の集合に同じ要素があるかどうかをチェックして、それらが一意であればそれをリストに追加します。そして、両方の集合に存在する要素は無視されます。

コード例:

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([2, 3, 6, 8])

temp1 = [x for x in set1 if x not in set2]
temp2 = [x for x in set2 if x not in set1]
diff_set = set(temp1 + temp2)
print(diff_set)

出力:

{8, 1, 4, 5}

XOR 演算子を用いた Python でセットの差分を見つける

セットの違いを見つける簡単な方法は、セットに XOR 演算を適用することで、同じ要素を削除し、必要に応じて両方のセットで同じではない要素のみを返します。

これをコードで実装するには、2つの集合の間に ^ 演算子を使って目的の集合の差分を得ることができます。

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([2, 3, 6, 8])

diff_set = set(set1) ^ set(set2)
print(diff_set)

出力:

{1, 4, 5, 8}

関連記事 - Python Set