Множества — неупорядоченные наборы уникальных объектов, поддерживающих хеширование.
Множества могут быть изменяемыми и неизменяемыми. Размерность и состав созданного однажды неизменяемого множества не может меняться, вместо этого обычно создаётся новое множество.

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

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

Типы множеств в стандартной библиотеке:
Множество (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 (последовательность)
На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.