2 способа, как найти пересечение множеств в Python
В этом уроке вы узнаете о пересечении множеств в Python, методе set.intersection() и операторе(&), и о том, как их использовать для нахождения пересечения двух или более множеств.
В Python вы можете использовать метод set intersection() или оператор(&) для пересечения двух или более множеств:
new_set = set1.intersection(set2, set3) new_set = set1 & set2 & set3
Метод пересечения() и оператор & имеют одинаковую производительность.
- Пересечение множеств в Python
- 1) Использование метода Python set intersection() для пересечения двух или более множеств
- 2) Использование оператора(&) для пересечения множеств в Python
- Отличия применения метода set intersection() от оператора(&)
Пересечение множеств в Python
При пересечении двух или более множеств вы получите новое множество, состоящее из элементов, существующих в каждом множестве.
Предположим, что у вас есть два следующих множества s1 и s2:
s1 = {'Python', 'Java','C++'} s2 = {'C#', 'Java', 'C++' }
Их пересечение возвращает новый набор, содержащий два элемента «Java» и «C++»:
s = {'Java', 'C++'}
…потому что это единственные элементы, существующие в обоих множествах.
Следующая диаграмма Венна иллюстрирует пересечение двух множеств s1 и s2:
Пересечение множеств имеет много полезных функций. Например, вы можете использовать набор пересечений, чтобы найти общих фаворитов двух друзей в приложении социальной сети или для поиска общих навыков двух или более сотрудников в приложении HR.
В Python вы можете пересекать два или более множеств, используя метод set intersection() или оператор(&).
1) Использование метода Python set intersection() для пересечения двух или более множеств
В этом примере показано, как использовать метод set intersection() для пересечения двух или более множеств:
new_set = set1.intersection(set2, set3, ...)
Ниже показано, как использовать данный метод для пересечения множеств s1 и s2:
s1 = {'Python', 'Java', 'C++'} s2 = {'C#', 'Java', 'C++'} s = s1.intersection(s2) print(s)
Выход:
{'C++', 'Java'}
2) Использование оператора(&) для пересечения множеств в Python
Python предоставляет вам оператор пересечения множеств(&), который позволяет пересекать два или более множеств:
new_set = s1 & s2 & s3 & ...
В следующем примере используется оператор(&) для пересечения множеств s1 и s2:
s1 = {'Python', 'Java', 'C++'} s2 = {'C#', 'Java', 'C++'} s = s1 & s2 print(s)
Выход:
new_set = s1 & s2 & s3 & ...
Отличия применения метода set intersection() от оператора(&)
Оператор пересечения множеств применяется только для множеств, тогда как метод set intersection() может принимать любые итерации, такие как строки, списки и словари.
Если вы передаете итерации методу set intersection(), он преобразует итерации в множество перед их пересечением. Однако оператор(&) вызовет ошибку, если вы используете его с итерируемыми объектами.
В следующем примере метод set intersection() используется для пересечения множества со списком:
numbers = {1, 2, 3} scores = [2, 3, 4] numbers = numbers.intersection(scores) print(numbers)
Выход:
{2, 3}
Если вместо этого вы используете оператор(&), то получите ошибку:
numbers = {1, 2, 3} scores = [2, 3, 4] numbers = numbers & scores print(numbers)
Выход:
TypeError: unsupported operand type(s) for &: 'set' and 'list'