Интерактивный учебник языка Python
1. Множества
Множество в языке Питон — это структура данных, эквивалентная множествам в математике. Множество может состоять из различных элементов, порядок элементов в множестве неопределен. В множество можно добавлять и удалять элементы, можно перебирать элементы множества, можно выполнять операции над множествами (объединение, пересечение, разность). Можно проверять принадлежность элемента множеству.
В отличие от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов неопределен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.
Элементами множества может быть любой неизменяемый тип данных: числа, строки, кортежи. Изменяемые типы данных не могут быть элементами множества, в частности, нельзя сделать элементом множества список (но можно сделать кортеж) или другое множество.
Задание множеств
Множество задается перечислением всех его элементов в фигурных скобках.
Исключением явлеется пустое множество, которое можно создать при помощи
функции 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
. Их поведение различается
только в случае, когда удаляемый элемент отсутствует в множестве.
В этом случае метод
не делает ничего, а метод remove
генерирует исключение KeyError
.
Наконец, метод pop
удаляет из множества один случайный
элемент и возвращает его значение. Если же множество пусто, то генерируется
исключение KeyError
.
Из множества можно сделать список при помощи функции list
.
Операции с множествами
С множествами в питоне можно выполнять обычные для математики операции над множествами.
A | B A.union(B) | Возвращает множество, являющееся объединением множеств | |
A |= B A.update(B) | Добавляет в множество | |
A & B A.intersection(B) | Возвращает множество, являющееся пересечением множеств | |
A &= B A.intersection_update(B) | Оставляет в множестве | Записывает в |
A <= B A.issubset(B) | Возвращает | |
A >= B A.issuperset(B) | Возвращает | |
A < B | Эквивалентно | |
A > B | Эквивалентно |
Ссылки на задачи доступны в меню слева. Эталонные решения теперь доступны на странице самой задачи.
Операции над множествами | Python
Множества могут применяться во многих логических задачах: от поиска файлов с одинаковым именем в разных директориях, до поиска кратчайших путей в графах между несколькими вершинами без общих ребер или вершин. Давайте рассмотрим несколько абстрактных примеров, которые демонстрируют основы работы с множествами.
Допустим, у нас есть три следующих множества:
>>> X = {'A', 'P', 'I', 'B', 'E', 'H', 'C', 'G', 'O', 'R', 'K', 'N'} >>> Y = {'A', 'J', 'S', 'P', 'I', 'L', 'D', 'C', 'G', 'Q', 'F', 'N'} >>> Z = {'A', 'J', 'N', 'B', 'U', 'T', 'H', 'D', 'G', 'Q', 'O', 'M'}
Данные множества могут обозначать совершенно разные сущности, из абсолютно произвольных областей, например X
, Y
и Z
могут обозначать какие-нибудь заболевания, допустим рак легкого, пневмония и астма. Тогда, выполняя определенные операции над этими множествами, можно выяснить кто из этих людей перенес несколько заболеваний. Пример, конечно, не очень жизнерадостный, но вы и сами можете придумать целое множество других примеров.
Давайте попробуем выяснить, какие элементы являются общими для всех трех множеств:
>>> X & Y & Z {'A', 'N', 'G'}
Данному результату соответствует следующая диаграмма Вена:
Что бы найти элементы, которые являются общими как минимум для двух множеств т. Z) — (X & Y & Z) {‘S’, ‘U’, ‘T’, ‘L’, ‘E’, ‘R’, ‘F’, ‘K’, ‘M’}
И выглядеть так:
В общем, с помощью операций над множествами, можно находить даже очень сложные подмножества:
>>> (Y & Z) | ((X - Y) - Z) {'A', 'J', 'E', 'D', 'G', 'Q', 'R', 'K', 'N'}
Набор
— Справочник по Python (Правильный путь) Документация 0.1 Набор
— Справочник по Python (Правильный путь) Документация 0.1Наборы — это изменяемые неупорядоченные наборы уникальных элементов. Обычное использование включает проверку принадлежности, удаление дубликатов из последовательности и вычисление стандартных математических операций над множествами, такими как пересечение, объединение, разность и симметричная разность.
Наборы не записывают позицию элемента или порядок вставки. Соответственно, наборы не поддерживают индексирование, нарезку или другое поведение, подобное последовательности.
Наборы реализованы с помощью словарей. Они не могут содержать изменяемые элементы, такие как списки или словари. Однако они могут содержать неизменяемые коллекции.
Конструкторы
- set()
- Возвращает тип набора, инициализированный из итерируемого.
- {} установить понимание
- Возвращает набор на основе существующих итераций.
- буквальный синтаксис
- Инициализирует новый экземпляр типа set .
Методы
Добавление элементов
- добавить
- Добавляет указанный элемент в набор.
- обновление
- Добавляет указанные элементы в набор.
Удаление
- отбросить
- Удаляет элемент из набора.
- удалить
- Удаляет элемент из набора (выдает KeyError , если не найден).
- поп
- Удаляет и возвращает произвольный элемент из набора.
- прозрачный
- Удаляет все элементы из набора.
Набор операций
- разница
- Возвращает новый набор с элементами в наборе, которых нет в указанных итерациях.
- перекресток
- Возвращает новый набор с элементами, общими для набора и указанных итераций.
- симметричная_разность
- Возвращает новый набор с элементами либо из набора, либо из указанного итерируемого объекта, но не из обоих.
- соединение
- Возвращает новый набор с элементами из набора и указанными итерируемыми объектами.
Копирование
- копия
- Возвращает копию набора.
Установить операторы
Добавление элементов
- |= (обновление)
- Добавляет элементы из другого набора.
Реляционные операторы
- == (равно)
- Возвращает логическое значение, указывающее, содержит ли набор те же элементы, что и другой набор.
- != (не равно)
- Возвращает логическое значение, указывающее, содержит ли набор элементы, отличные от элементов другого набора.
- <= (подмножество)
- Возвращает логическое значение, указывающее, содержится ли набор в другом наборе.
- < (собственно подмножество)
- Возвращает логическое значение, указывающее, содержится ли набор в указанном наборе и что наборы не равны.
- >= (использовать надмножество)
- Возвращает логическое значение, указывающее, содержит ли набор другой набор.
- > (собственный набор)
- Возвращает логическое значение, указывающее, содержит ли набор другой набор и что наборы не равны. 9(симметричная_разница)
- Возвращает новый набор с элементами либо из набора, либо из другого набора, но не из обоих.
- | (союз)
- Возвращает новый набор с элементами из набора и другого набора.
Установить назначение операций
- -= (difference_update)
- Обновляет набор, удаляя элементы из другого набора.
- &= (intersection_update)
- Обновляет набор, сохраняя только элементы, найденные в нем и в другом наборе. 9= (симметричное_разница_обновление)
- Обновляет набор, сохраняя только элементы, найденные в одном или другом наборе, но не в обоих.
Функции
- длина
- Возвращает тип int, указывающий количество элементов в коллекции.
- мин
- Возвращает наименьший элемент из коллекции.
- макс.
- Возвращает самый большой элемент в итерируемом объекте или самый большой из двух или более аргументов.
- сумма
- Возвращает общее количество элементов, содержащихся в итерируемом объекте.
- отсортировано
- Возвращает отсортированный список из итерируемого объекта.
- наоборот
- Возвращает обратный итератор для последовательности.
- все
- Возвращает логическое значение, указывающее, содержит ли коллекция только те значения, которые оцениваются как True.
- любой
- Возвращает логическое значение, указывающее, содержит ли коллекция какие-либо значения, которые оцениваются как True.
- перечислить
- Возвращает перечисляемый объект.
- почтовый индекс
- Возвращает список кортежей, где i-й кортеж содержит i-й элемент из каждой из последовательностей аргументов или итераций.
Читать документы v: последний
- Версии
- последний
- Загрузки
- htmlzip
- epub
- При прочтении документов
- Дом проекта
- Строит
Бесплатный хостинг документов предоставляется Read the Docs.
|