Как выбрать коллекцию в Python
Вопрос
Как вы выбираете между list, tuple, set, dict и deque? Приведите пример под каждую.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
list: упорядоченная изменяемая коллекция, доступ по индексу
tuple: неизменяемая запись, ключ словаря
set: уникальность и быстрый `in`
dict: поиск по ключу, группировка, кеш
deque: очередь, добавление и удаление с обоих концов за O(1)
Что могут спросить следом
- Какая сложность
x in listиx in set? - Как посчитать частоту слов в тексте?
Разбор
Образцовый ответ: «Сначала думаю, какие операции нужны чаще всего. Если нужна последовательность с доступом по индексу и добавлением в конец, это list: например, список заказов для вывода. Если это неизменяемая запись из нескольких полей или нужен составной ключ, беру tuple: координата (x, y) как ключ словаря. Если важна уникальность и частые проверки вхождения, set: множество уже обработанных id, проверка in за O(1) вместо O(n) у списка. Если нужен поиск по ключу, группировка или кеш, dict, часто через defaultdict или Counter. А для очереди задач или обхода в ширину deque, потому что pop(0) у списка O(n), а popleft у deque O(1). Ещё deque(maxlen=100) удобно хранит последние 100 событий».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.