Как найти пересечение множеств в Python?

Пересечение множеств в Python

 Пересечение множеств в 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!»

Добавить комментарий