Сообщить об ошибке.

Метод set.intersection_update() в Python, пересечение множеств

Сохраняет общие/одинаковые элементы для всех множеств

Синтаксис:

# Метод
set.intersection_update(*others)

# Бинарный оператор
set &= set1 & ...

Параметры:

Возвращаемое значение:

  • Метод изменяет множество и не возвращает никакого результата.

Описание:

Метод 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}