> Как устроены структуры данных list, dict и set в Python? (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Wildberries, ИП Калюков Николай Сергеевич, Домклик
Стек: Python
> Пример ответа
В Python list - это динамический массив (на уровне C - массив указателей на PyObject). Элементы хранятся последовательно, что даёт O(1) доступ по индексу. При добавлении элемента, если массив заполнен, выделяется новый блок памяти большего размера (обычно с коэффициентом роста ~1.125), и элементы копируются. Амортизированная сложность вставки в конец - O(1), вставка в начало - O(n).
dict реализован как хеш-таблица с открытой адресацией (в Python 3.6+ - компактная версия, где ключи и значения хранятся отдельно от хеш-таблицы). Хеш-функция вычисляется для ключа, затем по модулю размера таблицы определяется индекс. При коллизиях используется probing (линейное зондирование). Средняя сложность операций - O(1), в худшем случае - O(n). С Python 3.7 гарантирован порядок вставки элементов.
set - это фактически та же хеш-таблица, что и dict, но без значений (только ключи). Использует ту же логику хеширования и разрешения коллизий. Операции добавления, удаления и проверки вхождения - в среднем O(1). Важно: элементы должны быть хешируемыми (immutable-типы, например, числа, строки, кортежи).
> Похожие задачи по Python
Как происходит передача аргументов в функцию в Python
Какие HTTP статусы существуют и каково назначение 2xx, 3xx, 4xx, 5xx
Как работает Redis и почему он быстрый
Какие стеки технологий вы использовали
> Похожие задачи по backend
Как происходит передача аргументов в функцию в Python
Какие HTTP статусы существуют и каково назначение 2xx, 3xx, 4xx, 5xx
Как работает Redis и почему он быстрый
Какие стеки технологий вы использовали
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью