
Самый простой способ получить пересечение множеств в Python — это использовать оператор &
. Еще один годный способ заключается в использовании метода intersection()
. Рассмотрим оба варианта на примерах, и разберемся, в чем заключаются их отличия:
Пересечение множеств с помощью бинарного оператора «&»
Бинарный оператор «&» успешно справляется с объединением объектов типа set и frozenset. Но не пытайтесь провернуть эту операцию с объектами других типов, так как Python выдаст ошибку TypeError.
Пример объединения двух множеств:
a = {8, 9, 10}
b = {10, 20, 30}
res = a & b
print(res)
Полученный результат: {10}
С помощью «&» можно объединять любое количество объектов типа set и frozenset, но тип полученного результата будет совпадать с типом превого из объединяемых объектов.
Маленькая деталь, о которой нужно помнить
Пример объединения объектов типа frozenset и set:
a = frozenset({8, 9, 10})
b = {10, 20, 30}
c = {10, 100}
res2 = a & b & c
print(res2, type(res2))
Вывод на экран: frozenset({10}) <class 'frozenset'>
Пересечение множеств в Python с помощью метода intersection()
Метод set1.intersection(set2 [, set3.. setN])
позволяет найти пересечение множества set1 со всеми объектами, переданными в качестве аргументов.
При этом set1 может быть типа set, либо frozenset, а переданные в качестве аргументов объекты могут представлять собой любую итерируемую последовательность: множества, списки, строки и т. д.
В результате работы метода intersection()
получим объект того же типа, что и set1.
В качестве примеров сначала рассмотрим код нахождения пересечения двух множеств, а затем найдем пересечение множества, списка и строки:
Найдем пересечение двух множеств:
a = {8, 9, 10}
b = {10, 20, 30}
res = a.intersection(b)
print(res)
Полученный результат: {10}
Найдем пересечение множества, списка и строки:
a = {2, '5', 8}
b = ['5', '7', '9']
c = '555 пятерок'
a.intersection(b, c)
В результате получим: {'5'}
Чем пересечение с помощью оператора «&» отличается от пересечения с помощью метода intersection()?
При нахождении пересечения с помощью бинарного оператора &
все объекты должны быть типа set, либо frosenset. В противном случае Python выдаст ошибку.
В отличие от оператора «&», метод intersection()
позволяет находить пересечение множества с любыми итерируемыми последовательностями: кортежами, списками, другими множествами, строками и т. д. В этом смысле метод intersection() имеет более широкое применение. Однако «&» — более прост и успешно может быть использован для пересечения множеств.
У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»