# Метод set.symmetric_difference(other) # Бинарный оператор set1 ^ set2
other - iterable итерируемый объектset, set1 и set2 - множество frozenset или set.set или frozenset.Метод set.symmetric_difference() позволяет исключить из результата общие элементы для множества и последовательности, операцию еще называют симметричной разностью. Метод возвращает новое множество, в котором нет одинаковых элементов, встречающихся одновременно в множестве setи итерируемом объекте other. При выполнении операции симметричного разности, дубликаты игнорируются.
Метод set.symmetric_difference() принимает в качестве аргумента other любой объект, поддерживающий итерацию по своим элементам. Это может быть список, кортеж, список ключей словаря, или другое множество и т.д.
Операция симметричной разности позволяет использовать бинарный оператор ^ (крышка), но при этом оба объекта должны быть множествами frozenset или set. Если это условие не выполнено поднимается исключение TypeError. Бинарные операции, которые смешивают экземпляры set с frozenset, возвращают тип первого операнда. Например: frozenset('ab') ^ set('bc') возвращает экземпляр frozenset.
Эта операция поддерживается как неизменяемым frozenset, так изменяемым множеством set.
Для того, чтобы изменить множество set используйте метод set.symmetric_difference_update().
>>> sets = {1, 2, 6, 7} >>> fset = frozenset({0, 1, 2, 3, 4}) >>> lists = [3, 5, 6, 7] >>> tuples = (1, 7, 8, 9) # Использование метода >>> sets.symmetric_difference(lists) # {1, 2, 3, 5} # Дубликаты игнорируются >>> fset.difference(tuples) # frozenset({0, 2, 3, 4}) # Использование бинарного оператора, все # объекты должны быть множествами >>> sets ^ tuples # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # TypeError: unsupported operand type(s) for ^: 'set' and 'tuple' # Все объекты должны быть множествами >>>sets ^ frozenset(tuples) # {2, 6, 8, 9} # Тип получаемого результата зависит от первого операнда >>> fset ^ set(lists) # frozenset({0, 1, 2, 4, 5, 6, 7})