# Метод set.intersection_update(*others) # Бинарный оператор set &= set1 & ...
set
- только изменяемое множество set
;*others
- произвольное число объектов поддерживающих итерацию;set1
- множество frozenset
или set
.Метод set.intersection_update()
позволяет сохранить в множестве set
только те элементы, которые присутствуют одновременно во всех объектах, участвующих в операции. Метод изменяет множество set
"на месте" элементами, которые являются общими для множества set
и всех итерируемых объектов *other
. При выполнении данной операции, дубликаты игнорируются.
Метод set.intersection_update()
принимает в качестве аргумента *other
произвольное число любых объектов, поддерживающий итерацию по своим элементам. Это может быть список, кортеж, список ключей словаря, или другое множество и т.д.
Операция пересечения позволяет использовать бинарный оператор &=
, но при этом левый операнд должен быть изменяемым множеством, другие объекты могут быть множествами frozenset
или set
. Если это условие не выполнено поднимается исключение TypeError
.
Эта операция поддерживается только изменяемым множеством set
.
Для того, что-бы получить новое множество используйте метод intersection()
.
>>> sets = {0, 1, 2, 3, 7} >>> lists = [0, 1, 3, 5, 6, 7] >>> tuples = (0, 3, 5, 7, 8, 9) # Использование метода >>> sets.intersection_update(lists) # Метод изменяет множество >>> sets # {0, 1, 3, 7} # Дубликаты игнорируются >>> sets.intersection_update(lists, tuples) >>> sets # {0, 3, 7} >>> sets.clear() # Пересечение ищется во всех объектах, # участвующих в операции (sets.clear() = set()) >>> sets.intersection_update(lists, tuples) >>> sets # set() >>> sets = {0, 1, 2, 3, 7} # Использование бинарного оператора все # объекты должны быть множествами >>> 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) & sets(tuples) >>> sets # {0, 3, 7}