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