Списки, словари, множества, кортежи — базовые структуры данных Python, без которых не обойтись ни в анализе, ни на собеседовании. Спрашивают про сложность операций, разницу между list и tuple, когда использовать set вместо list. Понимание коллекций показывает, что кандидат пишет эффективный код, а не просто «работающий».
`list` и `tuple` допускают дубликаты и обычно используются, когда важен порядок элементов. `dict` нужен для соответствий ключ → значение. Для задачи «видели ли уже этот `user_id`» и дедупликации чаще всего выбирают `set`.
В `set` каждый элемент может быть только один раз. Это делает `set` удобным для задач вроде «убрать дубликаты» и «проверить, встречалось ли значение». У `set` нет индексации и срезов, а порядок элементов не следует считать стабильным или отсортированным.
Итерация по словарю по умолчанию даёт ключи, поэтому `for k in metrics:` — это обход ключей. Чтобы получить одновременно ключ и значение, используйте `metrics.items()`, где каждый элемент — пара `(key, value)`. Методы `metrics.keys()` и `metrics.values()` возвращают только ключи или только значения соответственно.
Если важно не менять исходный `list` (например, он нужен для других вычислений), используйте `sorted(scores)` — она создаст новый отсортированный список. Метод `.sort()` изменяет сам список `scores` и по стандарту возвращает `None`, поэтому его удобно использовать, когда нужно именно сортировать «на месте».
Для анализа воронки это частый приём: `shown - clicked` даёт аудиторию без клика. Для сравнения: `shown & clicked` — это те, кто и видел, и кликнул; `shown | clicked` — объединение всех пользователей из двух множеств.
В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать в Telegram