Четыре встроенные структуры данных, которые вместе покрывают почти все практические задачи хранения нескольких значений — каждая со своим набором компромиссов.
Индекс элемента в списке — это на самом деле смещение (offset) от начала коллекции в памяти, а не порядковый номер "по-человечески". Первый элемент находится прямо в начале, то есть смещение от начала до него равно нулю — отсюда индекс 0, а не 1. Это прямое практическое продолжение темы адресации памяти байтами (глава 01) — соглашение, унаследованное современными языками от гораздо более низкоуровневой логики работы с памятью, а не случайный выбор дизайнеров языка.
Список можно изменять после создания — добавлять, удалять, менять элементы по индексу. Списочное включение (list comprehension) — компактный способ создать список на основе другой последовательности:
Кортеж создаётся круглыми скобками и, в отличие от списка, не может быть изменён после создания — нельзя добавить, удалить или заменить элемент. Неизменяемость — не ограничение ради ограничения: она гарантирует, что кортеж нельзя случайно изменить где-то в другом месте программы, и позволяет использовать кортеж как ключ словаря (следующий раздел) — список для этого не подходит именно из-за своей изменяемости.
Доступ к значению — не по числовому индексу, а по ключу. Начиная с Python 3.7, словари
гарантированно сохраняют порядок добавления ключей (раньше на это нельзя было полагаться).
Методы .keys(), .values(), .items() дают доступ
отдельно к ключам, отдельно к значениям, или сразу к парам ключ-значение вместе.
Множество полезно там, где важна именно уникальность элементов (быстро убрать дубликаты из коллекции) или нужно быстро проверить принадлежность значения набору, а порядок элементов не имеет значения.
| Структура | Синтаксис | Изменяемая | Упорядоченная | Дубликаты |
|---|---|---|---|---|
| Список | [ ] | Да | Да | Разрешены |
| Кортеж | ( ) | Нет | Да | Разрешены |
| Словарь | {ключ: значение} | Да | Да (порядок добавления) | Ключи уникальны |
| Множество | { } | Да | Нет | Не допускаются |
Список словарей — крайне частый шаблон в реальных программах: например, список записей, каждая из которых описывается набором именованных полей — ровно то, во что естественно превращается табличка с данными, файл конфигурации или результат запроса к внешнему источнику данных.
Следующая глава — отдельно про строки: они тоже являются последовательностью (символов) и поддерживают многое из увиденного здесь — срезы, индексацию — плюс собственный богатый набор методов для работы именно с текстом.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.