Списки, словари, множества, кортежи — базовые структуры данных Python, без которых не обойтись ни в анализе, ни на собеседовании. Спрашивают про сложность операций, разницу между list и tuple, когда использовать set вместо list. Понимание коллекций показывает, что кандидат пишет эффективный код, а не просто «работающий».
`sum(values)` складывает элементы, а `len(values)` возвращает количество элементов в `list`. Для среднего нужно разделить сумму на количество. Если список может быть пустым, обычно добавляют проверку `len(values) > 0` перед делением.
Подробный разбор →Список проверяет принадлежность последовательным перебором элементов — O(n). Множество использует хеш-таблицу, поэтому проверка `x in s` занимает O(1) в среднем. При 100 000 элементах и миллионе проверок разница огромна. Сортировка списка не помогает: оператор `in` у `list` не использует бинарный поиск — он всегда делает линейный перебор.
Подробный разбор →Вызов `sorted(users, key=lambda u: u['age'])` создаст новый список, отсортированный по значению ключа `'age'`. Функция `lambda u: u['age']` вызывается для каждого элемента и возвращает число, по которому идёт сортировка. Передать строку `'age'` напрямую нельзя — `key` ожидает вызываемый объект. Альтернатива лямбде — `operator.itemgetter('age')` из стандартной библиотеки.
Подробный разбор →Метод `.remove("c")` выбросит `KeyError`, если элемента нет. `.discard("c")` безопасен: он удалит элемент при наличии и ничего не сделает при отсутствии. У `set` нет индексации, поэтому `del s["c"]` не работает. `.pop()` у `set` не принимает аргумент и удаляет произвольный элемент.
Подробный разбор →`set(campaigns)` удалит повторы, но вернёт `set`, порядок которого не стоит использовать как «отсортированный». `sorted(campaigns)` отсортирует, но оставит дубликаты. `sorted(set(campaigns))` удаляет повторы и возвращает новый отсортированный `list`.
Подробный разбор →В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать Python в Telegram