# Метод set.intersection(*others) # Бинарный оператор set1 & set2 & ...
*other
- произвольное число объектов поддерживающих итерациюset
, set1
и set2
- множество frozenset
или set
.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})