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

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

Найти общие элементы для множества и последовательности

Синтаксис:

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

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

Параметры:

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

  • новое множество set или frozenset.

Описание:

Метод set.intersection() позволяет найти пересечение множества с одной или более последовательностями поддерживающих итерирование. Метод возвращает новое множество с элементами, общими для множества set и всех итерируемых объектов *other (* - произвольное число позиционных аргументов). При выполнении операции пересечения, дубликаты игнорируются.

Метод set.intersection() принимает в качестве аргумента *other произвольное число любых объектов, поддерживающий итерацию по своим элементам. Это может быть список, кортеж, список ключей словаря, или другое множество и т.д.

Операция пересечения позволяет использовать бинарный оператор & (пересечение), но при этом все объединяемые объекты должны быть множествами frozenset или set. Если это условие не выполнено поднимается исключение TypeError. Двоичные операции, которые смешивают экземпляры set с frozenset, возвращают тип первого операнда. Например: frozenset('ab') & set('bc') возвращает экземпляр frozenset.

Эта операция поддерживается как неизменяемым frozenset, так изменяемым множеством set.

Для того, что-бы сохранить в множестве set элементы, общие для множества set и всех итерируемых объектов *other используйте метод set.intersection_update().

Примеры нахождения пересечения множеств:

>>> sets = {0, 1, 2, 3}
>>> fset = frozenset({0, 1, 2, 3, 4, 7})
>>> lists = [0, 1, 3, 5, 6, 7]
>>> tuples = (0, 1, 7, 8, 9)

# Использование метода
>>> sets.intersection(lists)
# {0, 1, 3}

# Дубликаты игнорируются
>>> fset.intersection(sets, lists, tuples)
# frozenset({0, 1})


# Использование бинарного оператора все
# объекты должны быть множествами
>>> sets & lists & tuples & fset
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: unsupported operand type(s) for &: 'set' and 'list'

# Все объекты должны быть множествами
>>> sets & frozenset(lists) & frozenset(tuples) & fset
# {0, 1}

# Тип получаемого результата зависит от первого операнда
>>> fset & set(tuples)
# frozenset({0, 1, 7})