Симметричная разность множеств в Python — что это и как найти
В этом уроке вы узнаете, что такое симметричную разность между двумя или более множествами в Python, и как ее найти.
- Введение в симметричную разность множеств
- Использование метода symmetric_difference() для нахождения симметричной разности множеств
- Оператор симметричной разности(^)
- Метод symmetric_difference() и оператор симметричной разности(^)
Введение в симметричную разность множеств
Симметричная разность между двумя множествами — это набор элементов, находящихся в каждом из множества, но не в их пересечении.
Предположим, что у вас есть следующие множества s1 и s2:
s1 = {'Python', 'Java', 'C++'} s2 = {'C#', 'Java', 'C++'}
Симметричная разность s1 и s2 возвращается в следующем множестве:
{'C#', 'Python'}
Как ясно видно из вывода, элементы возвращаемого множества находятся либо в s1, либо в s2, но не в их пересечении.
Следующая диаграмма Венна иллюстрирует симметричную разность множеств s1 и s2:
В 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'