# Метод set.difference(*others) # Математический оператор set1 - set2 - ...
*other
- произвольное число объектов поддерживающих итерациюset
, set1
и set2
- множество frozenset
или set
.set
или frozenset
.Метод set.difference()
позволяет получить элементы множества, которых нет в одной или более последовательности поддерживающих итерирование. Метод возвращает новое множество с уникальными элементами множества set
, которых нет во всех итерируемых объектов *other
(* - произвольное число позиционных аргументов). При выполнении операции вычитания, дубликаты игнорируются.
Метод set.difference()
принимает в качестве аргумента *other
произвольное число любых объектов, поддерживающий итерацию по своим элементам. Это может быть список, кортеж, список ключей словаря, или другое множество и т.д.
Операция вычитания позволяет использовать математический оператор -
(минус), но при этом все объекты должны быть множествами frozenset
или set
. Если это условие не выполнено поднимается исключение TypeError. Математические операции, которые смешивают экземпляры set
с frozenset
, возвращают тип первого операнда. Например: frozenset('ab') - set('bc')
возвращает экземпляр frozenset
.
Эта операция поддерживается как неизменяемым frozenset
, так изменяемым множеством set
.
Для того, что-бы изменить множество set
используйте метод set.difference_update()
.
>>> sets = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} >>> fset = frozenset({0, 1, 2, 3, 4}) >>> lists = [3, 5, 6, 7] >>> tuples = (1, 7, 8, 9) # Использование метода >>> sets.difference(lists, tuples) # {0, 2, 4, 10, 11} # Дубликаты игнорируются >>> fset.difference(lists, tuples) # frozenset({0, 2, 4}) # Использование бинарного оператора все # объекты должны быть множествами >>> sets - lists - tuples - fset # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # TypeError: unsupported operand type(s) for -: 'set' and 'list' # Все объекты должны быть множествами >>> sets - frozenset(lists) - frozenset(tuples) - fset # {10, 11} # Тип получаемого результата зависит от первого операнда >>> fset - frozenset(lists) # frozenset({0, 1, 2, 4})