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

Метод set.difference_update() в Python, уникальные элементы нескольких множеств

Удаляет одинаковые элементы для нескольких множеств

Синтаксис:

# Метод
set.difference_update(*others)

# Оператор
set -= set1 | ...

Параметры:

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

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

Описание:

Метод set.difference_update() позволяет удалить элементы из множества set, которые присутствуют во всех сравниваемых объектах. Метод изменяет множество set "на месте" уникальными элементами, которых нет в одном или более итерируемом объекте *other.

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

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

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

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

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

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

# Использование метода
>>> sets.difference_update(lists)
>>> sets
# {0, 1, 4, 8, 9, 10}

# Дубликаты игнорируются
>>> sets.difference_update(lists, tuples)
>>> sets
# {0, 4, 10}

>>> sets = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}

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

# Все объекты должны быть множествами
>>> sets -= frozenset(lists) | set(tuples)
# {0, 4, 10}