Списки, словари, множества, кортежи — базовые структуры данных Python, без которых не обойтись ни в анализе, ни на собеседовании. Спрашивают про сложность операций, разницу между list и tuple, когда использовать set вместо list. Понимание коллекций показывает, что кандидат пишет эффективный код, а не просто «работающий».
`nums.remove(1)` найдёт первое вхождение числа `1` (индекс 2) и удалит его, оставив `[10, 20, 30]`. А `del nums[1]` удалит элемент с индексом 1 (число `20`), оставив `[10, 1, 30]`. Путаница возникает, когда значение совпадает с допустимым индексом. Если значения нет, `.remove()` выбросит `ValueError`.
Подробный разбор →Для `set` есть базовые операции: объединение `a | b`, пересечение `a & b` и разность `a - b`. Пересечение возвращает элементы, которые присутствуют в обоих множествах, что часто используется для анализа пересекающихся аудиторий.
Подробный разбор →Если нужно сохранить тот же объект списка (например, на него есть другие ссылки), используйте `.extend()`: она добавит каждый элемент из `new_events` в `events`. `.append()` добавит один элемент (сам список), и получится вложенный список. Выражение `events = events + new_events` создаёт новый объект `list` и перепривязывает имя `events`, поэтому другие ссылки на старый список изменений не увидят.
Подробный разбор →`list` и `tuple` ориентированы на доступ по позиции (индексу), а не по идентификатору. `set` хранит только ключи без значений. Для задачи «по `user_id` хранить и обновлять число покупок» естественный выбор — `dict`, где ключом выступает `user_id`, а значением — счётчик.
Подробный разбор →Вызов `config.update(override)` заменит значение по ключу `"timeout"` на 10 и добавит новые ключи, если они есть в `override`. Вариант `override.update(config)` меняет другой объект и не подходит, если цель — обновить именно `config`.
Подробный разбор →В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать Python в Telegram