Коллекции и структуры данных: вопросы для собеседования (часть 4)

Списки, словари, множества, кортежи — базовые структуры данных Python, без которых не обойтись ни в анализе, ни на собеседовании. Спрашивают про сложность операций, разницу между list и tuple, когда использовать set вместо list. Понимание коллекций показывает, что кандидат пишет эффективный код, а не просто «работающий».

Генераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных

Вопросы 1620 из 40

16Дан список `nums = [10, 20, 1, 30]`. Чем отличаются `nums.remove(1)` и `del nums[1]`?
A`nums.remove(1)` удалит элемент по индексу `1`, то есть число `20`
B`del nums[1]` удалит первое вхождение значения `1` из списка `nums`
CОба вызова удалят одно и то же: элемент `20` по индексу `1` из `nums`
D`.remove(1)` удалит значение `1`, а `del nums[1]` — элемент по индексу
Ответ: `.remove(x)` ищет и удаляет первое вхождение значения `x`, а `del lst[i]` удаляет элемент по индексу `i`.

`nums.remove(1)` найдёт первое вхождение числа `1` (индекс 2) и удалит его, оставив `[10, 20, 30]`. А `del nums[1]` удалит элемент с индексом 1 (число `20`), оставив `[10, 1, 30]`. Путаница возникает, когда значение совпадает с допустимым индексом. Если значения нет, `.remove()` выбросит `ValueError`.

17Даны множества пользователей `a` и `b`. Как получить пользователей, которые есть одновременно в обоих множествах?
A`a | b`
B`a - b`
C`a & b`
D`a + b`
Ответ: Пересечение множеств — оператор `&`.

Для `set` есть базовые операции: объединение `a | b`, пересечение `a & b` и разность `a - b`. Пересечение возвращает элементы, которые присутствуют в обоих множествах, что часто используется для анализа пересекающихся аудиторий.

18Есть список событий `events = ["click"]`. Список `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
A`events.extend(new_events)`
B`events.append(new_events)`
C`events = events + new_events`
D`events.add(new_events)`
Ответ: `.extend()` добавляет элементы из итерируемого объекта в конец `list` и меняет список на месте.

Если нужно сохранить тот же объект списка (например, на него есть другие ссылки), используйте `.extend()`: она добавит каждый элемент из `new_events` в `events`. `.append()` добавит один элемент (сам список), и получится вложенный список. Выражение `events = events + new_events` создаёт новый объект `list` и перепривязывает имя `events`, поэтому другие ссылки на старый список изменений не увидят.

19Нужно хранить соответствие `user_id` → число покупок и обновлять счётчик при каждой покупке. Какая коллекция подходит лучше всего?
A`list`
B`set`
C`dict`
D`tuple`
Ответ: `dict` хранит пары ключ → значение и подходит для маппингов и счётчиков.

`list` и `tuple` ориентированы на доступ по позиции (индексу), а не по идентификатору. `set` хранит только ключи без значений. Для задачи «по `user_id` хранить и обновлять число покупок» естественный выбор — `dict`, где ключом выступает `user_id`, а значением — счётчик.

20Есть словарь настроек `config = {"timeout": 5, "retries": 2}` и словарь переопределений `override = {"timeout": 10}`. Как обновить `config`, чтобы применить переопределения?
A`config + override`
B`config.update(override)`
C`override.update(config)`
D`config.append(override)`
Ответ: `.update()` обновляет словарь значениями из другого словаря по ключам.

Вызов `config.update(override)` заменит значение по ключу `"timeout"` на 10 и добавит новые ключи, если они есть в `override`. Вариант `override.update(config)` меняет другой объект и не подходит, если цель — обновить именно `config`.

12345678

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать в Telegram

Другие темы: Python

Генераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных