Структуры данных — это просто специализированные форматы для организации и хранения данных. Они крайне необходимы для разработки программного обеспечения, поэтому их правильный выбор очень важен.
“Плохие программисты беспокоятся о коде. Хорошие программисты беспокоятся о структурах данных и отношениях между ними”, — Линус Торвальдс, создатель Linux.
Одна из важнейших характеристик в выборе правильной структуры — ее нотация О большое.
Что такое нотация О большое? Это язык описания производительности алгоритма и его масштабирования (не важно, насколько он быстрый).
Существует множество статей о структурах данных. В этой я сконцентрируюсь на реализации на Python, потому что:
- Нет единого материала о временной сложности структур данных.
- У меня несколько разных структур данных.
- Временная сложность может преподносить сюрпризы при реализации структуры данных.
Начнем
1. List
List
— это упорядоченный изменяемый набор элементов.

List
2. Set
Set
— это неупорядоченный набор уникальных хэшируемых объектов.

Set
3. Dict
Dict
отображает хэшируемые значения в произвольные изменяемые объекты.

Dict
4. Default dict
Defaultdict
— это словарь, который запускается со значением по умолчанию, когда каждый ключ встречается впервые.

Default dict
5. Deque
Deque
— это двусторонняя очередь.

Deque
6. Heapq
Heapq
— это двоичное дерево поиска, для которого каждый родительский узел имеет значение меньшее или равное любому из потомков.

Heapq
7. Counter
Counter
— это подкласс dict
для подсчета хэшируемых объектов. Это неупорядоченный набор, в котором элементы хранятся как ключи словаря и их значения как значения словаря.

Читайте также:
- Введение в модульное тестирование на Python
- Альтернатива switch в Python
- Знакомство с классами в Python
Перевод статьи Eyal Trabelsi: A Comprehensive Guide to Python’s Built-In Data Structures