В Python есть несколько встроенных коллекций (структур данных) для хранения и организации данных. Основные:
- list (список): Упорядоченная изменяемая коллекция, позволяющая хранить элементы разных типов. Доступ по индексу O(1). Вставка/удаление в конце O(1), в середине/начале O(n). Использует больше памяти, чем кортеж, из-за гибкости.
- tuple (кортеж): Упорядоченная неизменяемая коллекция. Быстрее списков для итерирования и доступа по индексу O(1). Вставка/удаление невозможны. Использует меньше памяти, чем список, так как фиксирован.
- set (множество): Неупорядоченная изменяемая коллекция уникальных элементов. Поддерживает операции над множествами (объединение, пересечение, разность). Добавление/удаление и проверка членства O(1) в среднем. Использует хеширование, что может требовать больше памяти, чем список/кортеж для небольшого количества элементов, но эффективно для больших объемов данных с уникальными элементами.
- frozenset (замороженное множество): Неупорядоченная неизменяемая коллекция уникальных элементов. Аналогично
set, но нельзя изменять после создания. Может использоваться как ключ в словаре или элемент другого множества.
- dict (словарь): Неупорядоченная изменяемая коллекция пар ключ-значение. Ключи должны быть хешируемыми (неизменяемыми, например, строки, числа, кортежи). Доступ, добавление и удаление по ключу O(1) в среднем. Использует хеширование, требует больше памяти, чем список/кортеж, но обеспечивает быстрый доступ по ключу.
| Коллекция | Упорядоченная | Изменяемая | Уникальные элементы | Скорость (доступ по индексу/ключу) | Скорость (вставка/удаление) | Использование памяти |
|---|
| list | Да | Да | Нет | O(1) | O(1) (конец), O(n) (середина/начало) | Среднее |
| tuple | Да | Нет | Нет | O(1) | N/A | Меньше (чем list) |
| set | Нет | Да | Да | N/A | O(1) (в среднем) | Среднее (для хеширования) |
| frozenset | Нет | Нет | Да | N/A | N/A | Среднее (для хеширования) |
| dict | Нет (в старых версиях, упорядоченный в 3.7+) | Да | Ключи уникальны | O(1) (в среднем) | O(1) (в среднем) | Большее (для хеширования) |
python