Что из себя представляют range объекты и в чем их отличие от списков?

В Python range — это ленивый (невычисляемый сразу) последовательный генератор чисел, а не список.

Основные свойства range:

  1. Не хранит все значения — содержит только начальное число, шаг и конечную границу.

    r = range(0, 10, 2)  # хранит start=0, stop=10, step=2
  2. Выделяет мало памяти — независимо от количества чисел.

    import sys
    sys.getsizeof(range(0, 1_000_000))  # ~48 байт
  3. Поддерживает индексирование и срезы — как список, но элементы вычисляются "на лету".

  4. Иммутабелен — нельзя изменить элементы.


Отличия от списка (list):

Критерий

range

list

Память

O(1)

O(n)

Вычисление значений

При обращении к элементу

Хранит все значения сразу

Изменяемость

Нет

Да

Скорость итерации

Быстрее при больших диапазонах

Может быть медленнее

Last updated

Was this helpful?