Множество в языке Питон — это структура данных, эквивалентная множествам в математике. Множество может состоять из различных элементов, порядок элементов в множестве неопределен. В множество можно добавлять и удалять элементы, можно перебирать элементы множества, можно выполнять операции над множествами (объединение, пересечение, разность). Можно проверять принадлежность элемента множеству.
В отличие от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов неопределен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.
Элементами множества может быть любой неизменяемый тип данных: числа, строки, кортежи. Изменяемые типы данных не могут быть элементами множества, в частности, нельзя сделать элементом множества список (но можно сделать кортеж) или другое множество. Требование неизменяемости элементов множества накладывается особенностями представления множества в памяти компьютера.
Множество задается перечислением всех его элементов в фигурных скобках.
Исключением явлеется пустое множество, которое можно создать при помощи
функции set()
. Если функции set
передать в качестве
параметра список, строку или кортеж, то она вернёт множество, составленное из элементов
списка, строки, кортежа. Например:
A = {1, 2, 3} A = set('qwerty') print(A)
выведет {'e', 'q', 'r', 't', 'w', 'y'}
.
Каждый элемент может входить в множество только один раз, порядок задания элементов неважен. Например, программа:
A = {1, 2, 3} B = {3, 2, 3, 1} print(A == B)
выведет True
, так как A
и B
— равные
множества.
Каждый элемент может входить в множество только один раз. set('Hello')
вернет множество из четырех элементов: {'H', 'e', 'l', 'o'}
.
Узнать число элементов в множестве можно при помощи функции len
.
Перебрать все элементы множества (в неопределенном порядке!) можно при помощи цикла for
:
primes = {2, 3, 5, 7, 11} for num in primes: print(num)
Проверить, принадлежит ли элемент множеству можно при помощи операции
in
, возвращающей значение типа bool
.
Аналогично есть противоположная операция not in
.
Для добавления элемента в множество есть метод add
:
A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4)
Для удаления элемента x
из множества есть два метода:
discard
и remove
. Их поведение различается
только в случае, когда удаляемый элемент отсутствует в множестве.
В этом случае метод discard
не делает ничего, а метод
remove
генерирует исключение KeyError
.
Наконец, метод pop
удаляет из множества один случайный
элемент и возвращает его значение. Если же множество пусто, то генерируется
исключение KeyError
.
Из множества можно сделать список при помощи функции list
.
С множествами в питоне можно выполнять обычные для математики операции над множествами.
A | B
A.union(B)
|
Возвращает множество, являющееся объединением множеств
A и B .
|
A |= B
A.update(B)
|
Добавляет в множество
A все элементы из множества B .
|
A & B
A.intersection(B)
|
Возвращает множество, являющееся пересечением множеств
A и B .
|
A &= B
A.intersection_update(B)
|
Оставляет в множестве A только те элементы, которые есть в множестве B .
|
A - B
A.difference(B)
|
Возвращает разность множеств
A и B (элементы, входящие в A ,
но не входящие в B ).
|
A -= B
A.difference_update(B)
|
Удаляет из множества
A все элементы, входящие в B .
|
A ^ B
A.symmetric_difference(B)
|
Возвращает симметрическую разность множеств
A и B (элементы, входящие в A
или в B , но не в оба из них одновременно).
|
A ^= B
A.symmetric_difference_update(B)
|
Записывает в
A симметрическую разность множеств A и B .
|
A <= B
A.issubset(B)
|
Возвращает
true , если A является подмножеством B .
|
A >= B
A.issuperset(B)
|
Возвращает
true , если B является подмножеством A .
|
A < B
|
Эквивалентно
A <= B and A != B
|
A > B
|
Эквивалентно
A >= B and A != B
|