Коллекции: множества

Коллекции: множества

@Pycoders

Множества

Множества - тип коллекций, который содержит не повторяющиеся элементы.

Единственное отличие set от frozenset заключается в том, что set - изменяемый тип данных, а frozenset - нет. Примерно похожая ситуация с списками и кортежами.

Оба типа могут принимать на вход набор элементов - список, кортеж, строку, другое множество.

Set

Создать множество set можно следующими способами.

Функция set(). Если не указать аргументов, то получится пустое множество.

a = set()

Можем добавить не обязательный аргумент, который принимает на вход другую коллекцию; получим множество со значениями.

a = set('hello')
# {'o', 'h', 'l', 'e'}

В фигурных скобках можно сразу же указать значения.

a = {'a', 'b', 'c'}

Ну и как же без всеми любимых генераторов.

a = {i ** 2 for i in range(5)}
# {0, 1, 4, 9, 16}

Если добавить существующее значение, то ничего не изменится.

a = {'a', 'b'}
a.add('b')
# {'a', 'b'}

Если попытаться создать множество просто из пустых фигурных скобок, то получится словарь, это важно.

a = {}
print(type(a))
#<class 'dict'>

Множества frozenset

Тип frozen set является видом множеств, которое не может быть изменено. Для его создания используется функция frozenset().

a = frozenset([1, 'b', 78])
a.add('a')

Traceback (most recent call last):
File "<stdin>", line 1, in <module>AttributeError: 'frozenset' object has no attribute 'add'

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

Функции и методы

С множествами можно выполнять множество операций, но все доступны для frozenset.

  • len(s) - число элементов в множестве (размер множества).
  • x in s - принадлежит ли x множеству s.
  • set.isdisjoint(other) - истина, если set и other не имеют общих элементов.
  • set == other - все элементы set принадлежат other, все элементы other принадлежат set.
  • set.issubset(other) или set <= other - все элементы set принадлежат other.
  • set.issuperset(other) или set >= other - аналогично.
  • set.union(other, ...) или set | other | ... - объединение нескольких множеств.
  • set.intersection(other, ...) или set & other & ... - пересечение.
  • set.difference(other, ...) или set - other - ... - множество из всех элементов set, не принадлежащие ни одному из other.
  • set.symmetric_difference(other); set ^ other - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
  • set.copy() - копия множества.

И операции, непосредственно изменяющие множество:

  • set.update(other, ...); set |= other | ... - объединение.
  • set.intersection_update(other, ...); set &= other & ... - пересечение.
  • set.difference_update(other, ...); set -= other | ... - вычитание.
  • set.symmetric_difference_update(other); set ^= other - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
  • set.add(elem) - добавляет элемент в множество.
  • set.remove(elem) - удаляет элемент из множества. KeyError, если такого элемента не существует.
  • set.discard(elem) - удаляет элемент, если он находится в множестве.
  • set.pop() - удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым.
  • set.clear() - очистка множества.


Report Page