Баннер мобильный (3) Пройти тест

Как использовать функцию range() в Python

Создаем диапазоны чисел, управляем шагом цикла и перебираем значения с функцией range()

Инструкция

29 июля 2026

Поделиться

Скопировано
Как использовать функцию range() в Python

Содержание

    Функция range() — одна из базовых и наиболее часто используемых в Python. Рассказываем, как она работает, где применяется и какие операции поддерживает.

    Что такое функция range() в Python и как она работает

    Range() — это функция в Python, которую используют, чтобы задать последовательность целых чисел. Она нужна, когда необходимо повторить действие несколько раз или обработать набор элементов. Эта функция применяется практически везде — от социальных сетей и компьютерных игр до онлайн-банкинга. 

    Пример работы range():

    Вызов функции
    Последовательность
    range(5)
    0, 1, 2, 3, 4
    range(2, 5)
    2, 3, 4
    range(2, 10, 2)
    2, 4, 6, 8
    range(5, 0, -1)
    5, 4, 3, 2, 1

    В результате вызова функции range() мы получаем объект типа range — встроенный тип Python. Объект range не хранит в памяти весь набор чисел, а описывает последовательность с помощью параметров — начала, конца и шага. Поэтому он занимает мало памяти даже при работе с большими диапазонами.

    При этом range не является генератором или итератором. Это отдельный тип последовательности, который можно перебирать, проверять с помощью оператора in, получать его длину через len(), а также использовать индексы и срезы.

    Вызов функции range() с аргументами покажет параметры объекта range. А чтобы увидеть все входящие в него числа, объект можно преобразовать в список:

    numbers = range(7)
    
    print(numbers)
    print(list(numbers))

    Вывод:

    range(0, 7)
    [0, 1, 2, 3, 4, 5, 6]

    Чаще всего range() используют вместе с циклом for. Цикл последовательно перебирает числа диапазона и выполняет для каждого из них заданный код:

    for i in range(5):
        print(i)

    Вывод:

    0
    1
    2
    3
    4

    Синтаксис, параметры и применение range()

    Функцию range() можно вызвать тремя способами:

    range(stop)
    range(start, stop)
    range(start, stop, step)

    Параметры, переданные в функцию, определяют начало и конец диапазона, а также расстояние между соседними числами (шаг).

    • Параметр start — первое число последовательности. По умолчанию start равен 0.
    • Параметр stop — граница, до которой строится последовательность. 
    • Параметр step — шаг между числами. По умолчанию step равен 1

    При этом значение stop в диапазон не входит. Поэтому, например, range(5) создает последовательность от 0 до 4, а не до 5.

    В качестве аргументов в range() передаются целые числа. Дробные числа и строки функция не принимает.

    Конечная граница stop

    Если передать один аргумент, то range() использует его как конечную границу. По умолчанию начальное значение (start) будет равно 0, а шаг (step) — 1.

    Как вызвать range(): пример IDLE Shell
    Вызов range(5) в IDLE Shell

    Вызов range(5) вернет объект как range(0, 5). Чтобы увидеть саму последовательность, преобразуем этот объект в список. Тогда получим [0, 1, 2, 3, 4].

    Диапазон чисел с параметрами start и stop

    Первый аргумент задает начало диапазона, второй — его конечную границу:

    range(2, 5)

    Получится такая последовательность:

    2, 3, 4

    Как задать шаг с параметром step

    Третий аргумент в range() определяет шаг последовательности:

    range(2, 10, 2)

    Последовательность:

    2, 4, 6, 8

    Шаг может быть положительным или отрицательным, но не может быть равен нулю. 

    Например, вызов range(1, 10, 0) приведет к ошибке ValueError, потому что Python не сможет перейти к следующему числу.

    Ошибка Range()
    Вызов range(1, 10, 0) в IDLE Shell

    Чтобы получить числа в порядке убывания, в range() указывают отрицательный шаг:

    for i in range(10, 0, -2):
        print(i)

    Здесь последовательность начинается с 10, уменьшается на 2 и заканчивается перед значением 0. Если start больше, чем stop, шаг должен быть отрицательным. При положительном шаге такой диапазон получится пустым.

    Вывод:

    10
    8
    6
    4
    2

    Также готовый диапазон можно перебрать в обратном порядке с помощью reversed():

    for i in reversed(range(1, 6)):
        print(i)

    Вывод:

    5
    4
    3
    2
    1

    В этом случае range(1, 6) сначала задает последовательность от 1 до 5, а reversed() меняет порядок ее перебора.

    Почему range() создает пустой диапазон

    При положительном шаге последовательность должна двигаться от меньшего значения к большему. Когда начальное значение больше конечного, в диапазон ничего не попадает. Например:

    for i in range(5, 3, 1):
        print(i)

    Цикл ничего не выведет, потому что диапазон начинается с 5, но положительный шаг увеличивает значения, тогда как конечная граница 3 находится в противоположном направлении.

    Как использовать range() с циклом for

    Повторить действие несколько раз

    Если нужно выполнить действие или блок кода фиксированное количество раз, можно использовать цикл for вместе с range():

    for _ in range(3):
        print("Отправляем запрос")

    Символ _ используется как имя переменной, потому что значения 0, 1 и 2 внутри цикла не нужны.

    Создать список чисел

    • Объект range можно преобразовать в обычный список с помощью функции list():
    numbers = list(range(1, 11))
    print(numbers)

    Вывод:

    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    squares = [number ** 2 for number in range(1, 6)]
    print(squares)

    Цикл перебирает числа от 1 до 5, возводит каждое в квадрат и добавляет результат в новый список.

    Вывод:

    [1, 4, 9, 16, 25]

    Как перебрать индексы элементов

    Если нужно обращаться к элементам списка по индексам, можно совместить range() с len():

    fruits = ["яблоко", "груша", "слива"]
    
    for i in range(len(fruits)):
        print(i, fruits[i])

    Функция len(fruits) возвращает количество элементов в списке — 3. Поэтому range(3) создает последовательность индексов 0, 1, 2. На каждой итерации переменная i получает очередной индекс, а выражение fruits[i] обращается к соответствующему элементу.

    Вывод:

    0 яблоко
    1 груша
    2 слива

    Но когда одновременно нужны индекс и сам элемент, удобнее использовать функцию enumerate():

    for i, fruit in enumerate(fruits):
        print(i, fruit)

    Цикл выводит те же строки, но код стал проще.

    Какие еще операции поддерживает объект range

    Кроме цикла for, объект range поддерживает основные операции для последовательностей.

    Получение длины

    Функция len() возвращает количество чисел в диапазоне:

    numbers = range(2, 10, 2)
    
    print(len(numbers))

    Вывод:

    4

    Диапазон содержит четыре числа: 2, 4, 6 и 8.

    Проверка наличия числа в диапазоне

    С помощью оператора in можно проверить, входит ли число в диапазон:

    numbers = range(0, 10, 2)
    
    print(6 in numbers)
    print(7 in numbers)

    Вывод:

    True
    False

    Число 6 входит в последовательность четных чисел, а 7 — нет.

    Обращение по индексу

    Элементы объекта range доступны по индексам:

    numbers = range(10, 20, 2)
    
    print(numbers[0])
    print(numbers[-1])

    Вывод:

    10
    18

    Индекс 0 указывает на первый элемент, а индекс -1 — на последний.

    Использование срезов

    К объектам range также можно применять срезы:

    numbers = range(10)
    part = numbers[2:7]
    
    print(part)

    Срез объекта range возвращает новый объект range. Чтобы вывести все его значения, результат можно преобразовать в список:

    print(list(part))

    Вывод:

    range(2, 7)
    [2, 3, 4, 5, 6]

    При этом объекты range нельзя складывать и умножать с помощью операторов + и *, как обычные списки.

    Можно ли передавать в range дробные числа

    Функция range() предназначена для работы с целыми числами и не принимает значения типа float. Например, попытка указать дробный шаг приведет к ошибке:

    range(0, 1, 0.1)

    В результате получим ошибку:

    TypeError: 'float' object cannot be interpreted as an integer

    Создать последовательность дробных чисел можно с помощью целого счетчика, а затем преобразовать полученные значения:

    values = [i / 10 for i in range(0, 11)]
    
    print(values)

    Вывод:

    [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]

    Здесь range(0, 11) задает целые числа от 0 до 10, а деление каждого числа на 10 создает последовательность дробных значений.

    При вычислениях с типом float иногда возникают погрешности из-за особенностей хранения вещественных чисел в памяти. Поэтому результат некоторых операций может незначительно отличаться от ожидаемого значения.

    Функция range() в Python: коротко о главном

    • Функция range() задает неизменяемую последовательность целых чисел
    • Функцию можно вызвать как range(stop), range(start, stop) или range(start, stop, step)
    • Параметр start по умолчанию равен 0, а step равен 1
    • Конечная граница stop не входит в последовательность. 
    • Шаг может быть положительным или отрицательным, но не может быть равен нулю. 
    • Если направление шага не соответствует границам, объект range представляет пустую последовательность. 
    • Чаще всего range() используют с циклом for, но объект также поддерживает len(), оператор in, индексы и срезы. 
    • Объект range можно преобразовать в список с помощью list(). 
    • Функция range() не принимает дробные числа, включая дробное значение шага.

    Инструкция

    Поделиться

    Скопировано
    0 комментариев
    Комментарии