Сложность операций со списком, словарём и множеством
Python
Senior
Яндекс
Назовите амортизированную асимптотическую сложность основных операций для `list`, `dict` и `set` в Python (поиск, вставка, удаление). В каких случаях `list` оказывается предпочтительнее хеш-структур?
Ответы
Сложности структур
Для `dict`/`set` (хеш-таблица):
- поиск по ключу: O(1) амортизированно;
- вставка/удаление: O(1) амортизированно.
Для `list`:
- доступ по индексу: O(1);
- поиск по значению: O(n);
- вставка/удаление из середины: O(n).
`list` предпочтительнее, когда:
- важен порядок и частые проходы по всему списку;
- структура маленькая и накладные расходы на хеш-таблицу не оправданы;
- нужен плотный массив данных (например, для дальнейшей передачи в NumPy).