Симметричная разность множеств в Python — что это и как найти

В этом уроке вы узнаете, что такое симметричную разность между двумя или более множествами в Python, и как ее найти.

Содержание

Введение в симметричную разность множеств

Симметричная разность между двумя множествами — это набор элементов, находящихся в каждом из множества, но не в их пересечении.

Предположим, что у вас есть следующие множества s1 и s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

Симметричная разность s1 и s2 возвращается в следующем множестве:

{'C#', 'Python'}

Как ясно видно из вывода, элементы возвращаемого множества находятся либо в s1, либо в s2, но не в их пересечении.

Следующая диаграмма Венна иллюстрирует симметричную разность множеств s1 и s2:

Симметричная разность двух множеств в Python

В Python вы можете найти симметричную разность двух или более множеств, используя метод set symmetric_difference() или оператор симметричной разности(^).

Использование метода symmetric_difference() для нахождения симметричной разности множеств

Тип Set имеет метод symmetric_difference(), который возвращает симметричную разность двух или более множеств:

new_set = set1.symmetric_difference(set2, set3,...)

Например, следующая команда находит симметричную разность наборов s1 и s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

s = s1.symmetric_difference(s2)

print(s)

Выход:

{'C#', 'Python'}

Обратите внимание, что метод symmetric_difference() возвращает новое множество и не изменяет исходные.

Оператор симметричной разности(^)

Помимо использования метода set symmetric_difference(), вы можете использовать оператор(^), чтобы найти симметричную разность между двумя или более множествами:

new_set = set1 ^ set2 ^...

В следующем примере показано, как применить оператор симметричной разности(^) к множествам s1 и s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

s = s1 ^ s2

print(s)

Выход:

{'Python', 'C#'}

Метод symmetric_difference() и оператор симметричной разности(^)

Метод symmetric_difference() принимает одну или несколько итераций, которые могут быть строками, списками или словарями. Если итерации не являются множествами, метод преобразует их в set, прежде чем возвращать их симметричную разность.

В следующем примере показано, как использовать метод symmetric_difference() для поиска симметричной разность между множеством и списком:

scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores.symmetric_difference(ratings)

print(new_set)

Выход:

{10, 7}

Однако оператор симметричной разности(^) применим только к множествам. Если вы используете его с итерациями, которые не являются множествами, вы получите ошибку. Например:

scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores ^ ratings

print(new_set)

Ошибка:

TypeError: unsupported operand type(s) for ^: 'set' and 'list'
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *