set1 & set2
set1.intersection(set2)
{x for x in set1 if x in set2}
Найти пересечение двух множеств в Python можно несколькими способами, каждый из которых имеет свои особенности по производительности и читаемости:
1. Метод intersection()
(или оператор &
):
set1 = {1, 2, 3, 4, 5}
set2 = {3, 5, 6, 7, 8}
intersection_set = set1.intersection(set2) # или set1 & set2
print(intersection_set) # Вывод: {3, 5}
Этот метод является самым распространенным и читаемым. Оператор &
- его краткая форма. Он возвращает новое множество, содержащее только элементы, которые присутствуют в обоих исходных множествах. Метод intersection()
может принимать любое количество итерируемых объектов (списки, кортежи, строки, другие множества) в качестве аргументов. Оператор &
требует, чтобы оба операнда были множествами.
2. Использование генератора множества:
set1 = {1, 2, 3, 4, 5}
set2 = {3, 5, 6, 7, 8}
intersection_set = {x for x in set1 if x in set2}
print(intersection_set) # Вывод: {3, 5}
Этот способ эквивалентен intersection()
, но может быть менее читаемым для тех, кто не знаком с генераторами множеств. Однако, он позволяет более гибко задавать условия для включения элементов в результирующее множество.
3. Использование цикла и условия:
set1 = {1, 2, 3, 4, 5}
set2 = {3, 5, 6, 7, 8}
intersection_set = set()
for element in set1:
if element in set2:
intersection_set.add(element)
print(intersection_set) # Вывод: {3, 5}
Этот метод менее эффективен, чем intersection()
или генератор множества, особенно для больших множеств, так как он требует итерации по одному из множеств и проверки наличия каждого элемента в другом множестве.
Какой метод использовать?
intersection()
(или оператор &
).Важно помнить, что все эти методы возвращают новое множество, а не изменяют исходные множества.