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