sets (множества)
Множества — неупорядоченные наборы уникальных объектов, поддерживающих хеширование.
Множества могут быть изменяемыми и неизменяемыми. Размерность и состав созданного однажды неизменяемого множества не может меняться, вместо этого обычно создаётся новое множество.
Множества обычно используются для проверки вхождения элемента, устранения из последовательности дубликатов, и таких математических операций как: пересечение, объединение, разница и симметичная разница.
Множества не упорядочены, они не хранят ни позицию элемента, ни порядок вставки. Поэтому наборы не поддерживают ни обращение к элементам по индексам, ни срезы, ни какое-либо другое поведение, присущее последовательностям.
Типы множеств в стандартной библиотеке:
Множество (set) — изменяемый набор.
Статичное множество (frozenset) — неизменяемый набор.
Проход по элементам
Проход по элементам последовательности производится при помощи for in:
Количество элементов
Количество элементов в последовательности можно получить, используя функцию len().
Сравнение
Два множества равны тогда и только тогда, когда каждый из элементов множества содержится во втором (когда каждое из множест является подмножеством другого).
Одно множество меньше другого тогда и только тогда, если первое является правильным подмножеством последнего (является подмножеством, но не равно).
Одно множество больше другого тогда и только тогда, когда первое является правильным надмножеством последнего (является надмножеством, но не равно).
Два любых непустых непересекающихся множества не являются равными и не являются подмножествами друг для друга, поэтому следующию сравнения вернут
Ввиду того, что множества реализуют частичное упорядочивание (отношения подмножеств), результат метода list.sort() для списка множеств не определён.
Множества обычно используются для проверки вхождения элемента, устранения из последовательности дубликатов, и таких математических операций как: пересечение, объединение, разница и симметичная разница.
Множества не упорядочены, они не хранят ни позицию элемента, ни порядок вставки. Поэтому наборы не поддерживают ни обращение к элементам по индексам, ни срезы, ни какое-либо другое поведение, присущее последовательностям.
Типы множеств в стандартной библиотеке:
Множество (set) — изменяемый набор.
Статичное множество (frozenset) — неизменяемый набор.
На заметку
В двоичных операций, где участуют сразу и множество и статичное множество, результатом будет тип первого операнда. Например, в
my = frozenset('ab') | set('bc')
my
будет статичным множеством.Проход по элементам
Проход по элементам последовательности производится при помощи for in:
for item in {1, 2, 'some'}:
print(item)
Количество элементов
Количество элементов в последовательности можно получить, используя функцию len().
len({1, 2, 'some'}) # 3
Сравнение
Два множества равны тогда и только тогда, когда каждый из элементов множества содержится во втором (когда каждое из множест является подмножеством другого).
Одно множество меньше другого тогда и только тогда, если первое является правильным подмножеством последнего (является подмножеством, но не равно).
Одно множество больше другого тогда и только тогда, когда первое является правильным надмножеством последнего (является надмножеством, но не равно).
Два любых непустых непересекающихся множества не являются равными и не являются подмножествами друг для друга, поэтому следующию сравнения вернут
False
: a == b
, a > b
, a < b
. Множества не реализуют метод __cmp__().Ввиду того, что множества реализуют частичное упорядочивание (отношения подмножеств), результат метода list.sort() для списка множеств не определён.
На заметку
Ранее (до +py2.4) множества были доступны из модуля
sets
в несколько ином виде.На заметку
О сложности основных операций для данного типа можно узнать из статьи «Сложность операций со множествами».
Синонимы поиска: sets (множества), множество, множества, наборы
Статьи раздела
frozenset | Статичное (неизменяемое) множество. |
sets.copy | Возвращает поверхностную копию множества. |
sets.difference | Возвращает разницу — из элементов данного множества удаляются элемент… |
sets.intersection | Возвращает пересечение — элементы данного множества, также присутству… |
sets.isdisjoint | Производит проверку, не пересекается ли рассматриваемое множество с з… |
sets.issubset | Производит проверку, является ли рассматриваемое множество подмножест… |
sets.issuperset | Производит проверку, является ли рассматриваемое множество надмножест… |
sets.symmetric_difference | Возвращает симметричную разницу — только те элементы, которые есть ли… |
sets.union | Возвращает объединение — элементы данного множества дополняются элеме… |
set (множество) | Изменяемое множество. |
В разделе «Iterable (итерируемый)»:
Mapping (отображение)
Sequence (последовательность)
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.