Sets - Learn Python 3 - Snakify

Lesson 10
наборы


1. Что такое набор

Набор в Python - это структура данных, эквивалентная наборам в математике. Он может состоять из различных элементов; порядок элементов в множестве не определен. Вы можете добавлять и удалять элементы набора, вы можете выполнять итерацию элементов набора, вы можете выполнять стандартные операции над наборами (объединение, пересечение, разность). Кроме того, вы можете проверить, принадлежит ли элемент к набору.

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

Любой неизменяемый тип данных может быть элементом набора: числом, строкой, кортежем. Переменные (изменяемые) типы данных не могут быть элементами набора. В частности, список не может быть элементом набора (но кортеж может), а другой набор не может быть элементом набора. Требование непреложности следует из того, как компьютеры представляют собой множества в памяти.

Advertising by Google, may be based on your interests

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'} .

Advertising by Google, may be based on your interests

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 функций.

Advertising by Google, may be based on your interests

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
Advertising by Google, may be based on your interests