Методы множеств

Методы множеств#

Множества возвращают уникальный набор элементов из последовательности (последовательность должна быть из неизменяемых объектов):

s = set([1, 1, 2, 2, 5, 5])

s
{1, 2, 5}
  • add - добавляет элемент в множество, если такого элемента в нем еще нет. Если элемент уже содержится в множестве, то множество не изменится

s = set([1, 1, 2, 2, 5, 5])

s.add(5)
s
{1, 2, 5}
s = set([1, 1, 2, 2, 5, 5])

s.add(6)
s
{1, 2, 5, 6}
  • clear - удаляет все элементы из текущего множества

s = set([1, 1, 2, 2, 5, 5])

s.clear()
s
set()
  • copy - возвращает копию текущего множества, содержащую такой же набор объектов

s = set([1, 1, 2, 2, 5, 5])

# Во время копирования мы создаем новую переменную, которая указывает на новое множество
new_s = s.copy()

id(s), id(new_s)
(139805213194752, 139805213194528)
s = set([1, 1, 2, 2, 5, 5])

# Во время присваивания мы создаем новую переменную, которая указывает на то же множество
new_s = s

id(s), id(new_s)
(139805213194976, 139805213194976)
  • difference - возвращает элементы текущего множества, отсутствующие в множестве, переданном в качестве параметра функции

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.difference(s2)
{1, 2}
  • difference_update - удаляет из текущего множества элементы, присутствующие в множестве, переданном в качестве параметра функции

s = set([1, 1, 2, 2, 5, 5])
s2 = set([1, 2])

s.difference_update(s2)
s
{5}
  • discard - удаляет элемент из текущего множества

s = set([1, 1, 2, 2, 5, 5])

s.discard(5)
s
{1, 2}
  • intersection - возвращает результат пересечения текущего множества с множеством, переданном в качестве параметра функции

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.intersection(s2)
{3, 4, 5}
  • intersection_update - удаляет из текущего множества элементы, не входящие в множество, переданное в качестве параметра функции

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.intersection_update(s2)
s
{3, 4, 5}
  • isdisjoint - проверяет наличие пересечения между множествами. Возвращает True, если пересечения нет

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.isdisjoint(s2)
False
s = set([1, 2, 3, 4, 5])
s2 = set([6, 7, 8, 9, 10])

s.isdisjoint(s2)
True
  • issubset - проверяет все ли элементы текущего множества входят в множество, переданное в качестве параметра функции (является ли текущее множество подмножеством другого)

s = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3])

s.issubset(s2)
False
s = set([1, 2, 3])
s2 = set([1, 2, 3, 4, 5])

s.issubset(s2)
True
  • issuperset - проверяет включает ли в себя текущее множество все элементы переданного

s = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3])

s.issuperset(s2)
True
s = set([1, 2, 3])
s2 = set([1, 2, 3, 4, 5])

s.issuperset(s2)
False
  • pop - удаляет первый элемент из текущего множества и возвращает его

s = set([1, 1, 2, 2, 5, 5])

v = s.pop()
s, v
({2, 5}, 1)
  • remove - удаляет значение из текущего множества

s = set([1, 1, 2, 2, 5, 5])

s.remove(2)
s
{1, 5}
  • symmetric_difference - возвращает элементы множеств, не попавшие в их пересечение

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.symmetric_difference(s2)
{1, 2, 6, 7}
  • symmetric_difference_update - заменяет элементы текущего множества элементами из двух множеств, не попавшими в их пересечение

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.symmetric_difference_update(s2)
s
{1, 2, 6, 7}
  • union - возвращает объединение двух множеств

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.union(s2)
{1, 2, 3, 4, 5, 6, 7}
  • update - добавляет в исходное множество элементы из множества, переданного в качестве параметра функции

s = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])

s.update(s2)
s
{1, 2, 3, 4, 5, 6, 7}