Сессионизация по тайм-ауту 30 минут

Medium Python алгоритмы Yandex / Авито (DA-classic)

Условие задачи

Дан список событий `events` — sorted список tuples `(user_id, timestamp_seconds)`. Разбейте каждого user_id на сессии: новая сессия начинается если между событиями > 1800 секунд (30 минут). Верните dict {user_id: [num_events_in_session1, num_events_in_session2, ...]}. Аналитический контекст: классика DA — sessionization без pandas/SQL. Реализуй `sessionize(events, timeout=1800)` — возвращает результат.

Темы

algorithms python hash-map real-da

Подсказки

Что проверяет эта задача

Задача «Сессионизация по тайм-ауту 30 минут» учит решать алгоритмические задачи на Python: оценивать сложность по времени и памяти и выбирать подходящую структуру данных. Такие задачи дают на собеседованиях в Yandex / Авито (DA-classic) и других IT-компаниях. Уровень средний — типичная боевая задача на уверенный Python.

Как подступиться к решению

Сначала разбери условие и формат входа-выхода, прикинь крайние случаи (пустой ввод, дубли, NaN). Затем выбери структуру данных и собери решение по шагам — начни с простого рабочего варианта, потом оптимизируй сложность. Код пишешь и запускаешь прямо в браузере: Python-тренажёр исполняет его через Pyodide (pandas, numpy, scipy) и проверяет результат автоматически.

На собеседовании по Python для аналитика ценят чистый читаемый код, корректную обработку крайних случаев (пустой ввод, дубли, None) и умение вслух оценить сложность по времени и памяти. Часто просят не просто решить, а разобрать альтернативные подходы и показать, где наивное решение сломается на большом объёме данных.

Прокачать Python для аналитики — бесплатный курс «Pandas с нуля» и Python-тренажёр.

Открыть задачу в тренажёре → ← Все Python-задачи