Сообщить об ошибке.

Метод set.symmetric_difference_update() в Python, симметричная разность

Обновление множества при нахождении симметричной разности

Синтаксис:

# Метод
set.symmetric_difference_update(other)

# Бинарный оператор
set ^= set1

Параметры:

Возвращаемое значение:

  • Метод изменяет множество и не возвращает никакого результата.

Описание:

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

Метод set.symmetric_difference_update() принимает в качестве аргумента other любой объект, поддерживающий итерацию по своим элементам. Это может быть список, кортеж, список ключей словаря, или другое множество и т.д.

Операция позволяет использовать бинарный оператор ^=, но при этом левый операнд должен быть изменяемым множеством, а правый - должны быть множеством frozenset или set. Если это условие не выполнено поднимается исключение TypeError.

Эта операция поддерживается только изменяемым множеством set.

Для того, что-бы получить новое множество используйте метод symmetric_difference().

Примеры обновления множества при нахождении симметричной разности:

>>> sets = {1, 2, 6, 7}
>>> lists = [3, 5, 6, 7]
>>> tuples = (1, 7, 8, 9)

# Использование метода
>>> sets.symmetric_difference_update(lists)
>>> sets
# {1, 2, 3, 5}

# Дубликаты игнорируются
>>> sets.symmetric_difference_update(tuples)
>>> sets
# {2, 3, 5, 7, 8, 9}

>>> sets = {1, 2, 6, 7}

# Использование бинарного оператора, все
# объекты должны быть множествами
>>> sets ^= tuples
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: unsupported operand type(s) for ^=: 'set' and 'tuple'

# Все объекты должны быть множествами
>>> sets ^= set(tuples)
# {2, 6, 8, 9}

>>> fset = frozenset({0, 1, 2, 3, 4})
>>> sets ^= fset
# {0, 1, 3, 4, 6, 8, 9}