> Что такое range в Python и как он используется в качестве аргумента? (Python)
Уровень: junior · Роль: backend · Категория: Технические вопросы
Компании: Сбер
Стек: Python
> Пример ответа
Короткий ответ
range - это встроенная функция в Python, которая возвращает неизменяемую последовательность чисел. Она часто используется в циклах for для повторения действий заданное количество раз. В качестве аргумента range принимает от одного до трёх целых чисел: stop, либо start и stop, либо start, stop и step. Результат - объект range, который экономит память, так как не хранит все числа сразу.
Подробное объяснение
range создаёт арифметическую прогрессию целых чисел. Основные формы вызова:
range(stop)- генерирует числа от0доstop - 1.range(start, stop)- отstartдоstop - 1.range(start, stop, step)- с шагомstep(может быть отрицательным).
Объект range ведёт себя как последовательность: поддерживает индексацию, срезы, проверку вхождения (in), а также может быть преобразован в список через list(). При этом сам объект хранит только параметры (start, stop, step) и вычисляет элементы лениво при итерации. Это делает его эффективным для больших диапазонов.
В качестве аргумента range часто передаётся в функции, которые ожидают итерируемый объект, например sum(), max(), min(), или используется для создания списков через list(range(...)). Также он применяется для индексации коллекций, когда нужно пройтись по индексам.
На практике
На практике range используется в трёх основных сценариях:
- Повторение действий N раз - самый частый случай в циклах.
- Итерация по индексам списка - когда нужен доступ к элементу по позиции.
- Генерация последовательностей чисел - например, для создания списка чётных чисел или обратного порядка.
Важно помнить, что range не включает stop в результат. Если нужен включительный диапазон, добавляют +1 к stop. Также при отрицательном step нужно следить, чтобы start был больше stop, иначе последовательность будет пустой.
Пример кода
PYTHON# Базовые вариантыprint(list(range(5))) # [0, 1, 2, 3, 4]print(list(range(2, 7))) # [2, 3, 4, 5, 6]print(list(range(0, 10, 2))) # [0, 2, 4, 6, 8]print(list(range(5, 0, -1))) # [5, 4, 3, 2, 1]# Использование в циклеfor i in range(3):print(f"Итерация {i}")# Передача как аргументnumbers = list(range(1, 6))total = sum(range(1, 101)) # сумма от 1 до 100max_value = max(range(10, 0, -1)) # 10# Индексация спискаfruits = ["apple", "banana", "cherry"]for idx in range(len(fruits)):print(idx, fruits[idx])
Как отвечать на собеседовании
Начни с краткого определения: range - функция для генерации последовательности чисел. Затем перечисли три формы вызова и объясни, что stop не включается. Упомяни ленивость вычислений и экономию памяти. Приведи пример использования в цикле for и как аргумент для list(). Если спросят про Python 2, отметь, что там был xrange, а в Python 3 range работает как xrange. Не углубляйся в детали реализации, если не просят.
Что проверяет интервьюер
Интервьюер проверяет базовое понимание синтаксиса и семантики range: знание параметров, поведение с отрицательным шагом, отличие от списка. Также оценивается понимание ленивых вычислений и умение применять range в практических задачах - например, для обхода индексов. Важно показать, что ты знаешь про range как итерируемый объект, а не просто функцию.
Типичные ошибки
- Забывают, что
stopне включается, и ожидают числоstopв результате. - Путают порядок аргументов:
range(start, stop, step)- шаг всегда третий. - Используют
rangeс нецелыми числами - это вызываетTypeError. - Пытаются использовать
rangeс отрицательным шагом без указанияstartбольшеstop. - Думают, что
rangeвозвращает список - на самом деле это отдельный типrange. - Используют
range(len(list))там, где можно итерироваться напрямую по элементам, что считается менее идиоматичным.
> Похожие задачи по backend
Удалится ли циклическая структура из памяти и когда это происходит в Python?
Какова временная сложность добавления элемента в список Python в конец, начало и середину
Как выбрать строку с определённым индексом в DataFrame
Какие есть ограничения на ключи в dict в Python?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью