Lesson 10
наборы
1. Что такое набор
Набор в Python - это структура данных, эквивалентная наборам в математике. Он может состоять из различных элементов; порядок элементов в множестве не определен. Вы можете добавлять и удалять элементы набора, вы можете выполнять итерацию элементов набора, вы можете выполнять стандартные операции над наборами (объединение, пересечение, разность). Кроме того, вы можете проверить, принадлежит ли элемент к набору.
В отличие от массивов, где элементы хранятся в виде упорядоченного списка, порядок элементов в наборе не определен (более того, элементы набора обычно не сохраняются в порядке появления в наборе, что позволяет проверить, принадлежит ли элемент к набору быстрее чем просто пройти через все элементы набора).
Любой неизменяемый тип данных может быть элементом набора: числом, строкой, кортежем. Переменные (изменяемые) типы данных не могут быть элементами набора. В частности, список не может быть элементом набора (но кортеж может), а другой набор не может быть элементом набора. Требование непреложности следует из того, как компьютеры представляют собой множества в памяти.
2. Как определить набор
Вы можете определить набор так же просто, как именовать все его элементы в скобках. Единственным исключением является пустой набор , который может быть создан с помощью функции 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'}
.
3. Операции с элементами
Вы можете получить количество элементов в наборе, используя функцию len
.
Вы также можете перебирать все элементы набора (в неопределенном порядке!), Используя цикл for
:
primes = {2, 3, 5, 7, 11} for num in primes: print(num)
Вы можете проверить , принадлежит ли элемент к набору , используя ключевое слово in
: выражения типа a in A
свою очередь значение типа bool
. Точно так же есть противоположная операция not in
. Чтобы добавить элемент в набор, существует метод add
:
A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4)
Есть два способа , чтобы удалить элемент из набора: discard
и remove
. Их поведение меняется только в том случае, если удаленный элемент не был установлен. В этом случае метод discard
ничего не делает, и метод remove
KeyError
исключение KeyError
.
Наконец, pop
удаляет один случайный элемент из набора и возвращает его значение. Если набор пуст, pop
генерирует исключение KeyError
.
Вы можете преобразовать набор в список, используя list
функций.
4. Операции над наборами
Так вы выполняете хорошо известные операции над наборами в Python:
A | В A.union (В) | Возвращает множество, являющееся объединением множеств A и B |
A | = B A.update (В) | Добавляет все элементы массива B в множество A |
A & B A.intersection (В) | Возвращает набор, являющийся пересечением множеств A и B |
A & = B A.intersection_update (В) | Листья в множестве A только элементы, принадлежащие множеству B |
A - B A.difference (В) | Возвращает заданное различие A и B (элементы, включенные в A , но не включены в B ). |
A - = B A.difference_update (В) | Удаляет все элементы из B из множества A |
A ^ B A.symmetric_difference (В) | Возвращает симметричную разность множеств A и B (элементы, принадлежащие A или B , но не для обоих наборов одновременно). |
A ^ = B A.symmetric_difference_update (В) | Запишет в A симметричную разность множеств A и B |
A <= B A.issubset (В) | Возвращает true если A является подмножеством B |
A> = B A.issuperset (В) | Возвращает true если B является подмножеством A |
A <B | Эквивалентно A <= B and A != B |
A> B | Эквивалентно A >= B and A != B |