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

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

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

Вопросы 2630 из 40

26При обработке событий нужно хранить идентификаторы пользователей, которых вы уже видели, чтобы быстро проверять условие `user_id in seen` и не хранить дубликаты. Что лучше использовать для `seen`?
A`list`
B`tuple`
C`dict`
D`set`
Ответ: `set` хранит уникальные элементы и удобен для проверок `x in s`.

`list` и `tuple` допускают дубликаты и обычно используются, когда важен порядок элементов. `dict` нужен для соответствий ключ → значение. Для задачи «видели ли уже этот `user_id`» и дедупликации чаще всего выбирают `set`.

27Какое утверждение про `set` верное?
A`set` поддерживает индексацию `s[0]` и срезы `s[1:3]`.
B`set` хранит дубликаты так же, как `list`.
C`set` хранит только уникальные элементы и удобно подходит для проверки принадлежности через `x in s`.
D`set` гарантирует отсортированный порядок элементов.
Ответ: `set` — это коллекция уникальных элементов; её часто используют для дедупликации и проверок `x in s`.

В `set` каждый элемент может быть только один раз. Это делает `set` удобным для задач вроде «убрать дубликаты» и «проверить, встречалось ли значение». У `set` нет индексации и срезов, а порядок элементов не следует считать стабильным или отсортированным.

28Есть словарь метрик `metrics = {"views": 100, "clicks": 5}`. Как корректно пройтись по парам ключ-значение в цикле `for`?
A`for k, v in metrics:`
B`for k, v in metrics.items():`
C`for k, v in metrics.values():`
D`for k, v in metrics.keys():`
Ответ: Для обхода пар ключ-значение используйте `.items()`.

Итерация по словарю по умолчанию даёт ключи, поэтому `for k in metrics:` — это обход ключей. Чтобы получить одновременно ключ и значение, используйте `metrics.items()`, где каждый элемент — пара `(key, value)`. Методы `metrics.keys()` и `metrics.values()` возвращают только ключи или только значения соответственно.

29Есть список `scores = [3, 1, 2]`. Нужно получить новый отсортированный список, не изменяя `scores`. Что выбрать?
A`sorted(scores)`
B`scores.sort()`
C`sort(scores)`
D`scores.sorted()`
Ответ: `sorted()` возвращает новый список, а `.sort()` сортирует список на месте и возвращает `None`.

Если важно не менять исходный `list` (например, он нужен для других вычислений), используйте `sorted(scores)` — она создаст новый отсортированный список. Метод `.sort()` изменяет сам список `scores` и по стандарту возвращает `None`, поэтому его удобно использовать, когда нужно именно сортировать «на месте».

30Есть множество пользователей `shown` (показали баннер) и `clicked` (кликнули). Как получить пользователей, которым показали баннер, но которые не кликнули?
A`shown & clicked`
B`shown - clicked`
C`clicked - shown`
D`shown | clicked`
Ответ: Разность множеств `a - b` возвращает элементы, которые есть в `a`, но отсутствуют в `b`.

Для анализа воронки это частый приём: `shown - clicked` даёт аудиторию без клика. Для сравнения: `shown & clicked` — это те, кто и видел, и кликнул; `shown | clicked` — объединение всех пользователей из двух множеств.

12345678

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

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

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

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

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