関数の機能:
集合の対称差(setAとsetBの1つだけにある要素の集合)を求める
setA.symmetric_difference(setB)
setA.symmetric_difference_update(setB)
symmetric_difference :
集合の対称差を返却
(setAは変更されない)
symmetric_difference_update :
関数を呼び出した集合が集合の対称差に変更される
(setAが変更される, 返却値はNone)
例1 : 2つの集合の対称差
>>> set1 = {'A', 'B', 'C'}
>>> set2 = {'B', 'C', 'D'}
>>> set1.symmetric_difference(set2)
{'D', 'A'}
この例では、set1とset2の1つだけにある要素の集合が関数から返却されています。
この例のイメージを下図に示します。集合の対称差は図中の青い部分で、この部分の集合が関数から返却されます。
なお、関数の呼び出し後にset1の内容を確認すると更新されていないことがわかります。
>>> set1
{'C', 'B', 'A'}
この関数を使う代わりに ^ 演算子を使用して下記のように記述することもできます。
>>> set1 ^ set2
{'D', 'A'}
difference_updateを使用した場合は下記のようになります。
>>> set1.symmetric_difference_update(set2)
>>> set1
{'A', 'D'}
例2 : 3つの集合の対称差
>>> set1 = {'A', 'B', 'C'}
>>> set2 = {'B', 'D'}
>>> set3 = {'C', 'E'}
>>> set1.symmetric_difference(set2, set3)
Traceback (most recent call last):
...
TypeError: set.symmetric_difference() takes exactly one argument (2 given)
関数symmetric_differenceは、引数に複数の集合を指定することができない仕様となっていますので、エラーが発生します。
^ の演算子を使用して下記のように記述することはできます。
>>> set1 ^ set2 ^ set3
{'D', 'E', 'A'}
関連項目
関数set.difference(_update)の使い方の例
関数set.intersection(_update)の使い方の例
関数set.union, set.updateの使い方の例