Что из себя представляют range объекты и в чем их отличие от списков?
В Python range
— это ленивый (невычисляемый сразу) последовательный генератор чисел, а не список.
Основные свойства range
:
range
:Не хранит все значения — содержит только начальное число, шаг и конечную границу.
r = range(0, 10, 2) # хранит start=0, stop=10, step=2
Выделяет мало памяти — независимо от количества чисел.
import sys sys.getsizeof(range(0, 1_000_000)) # ~48 байт
Поддерживает индексирование и срезы — как список, но элементы вычисляются "на лету".
Иммутабелен — нельзя изменить элементы.
Отличия от списка (list
):
list
):Критерий
range
list
Память
O(1)
O(n)
Вычисление значений
При обращении к элементу
Хранит все значения сразу
Изменяемость
Нет
Да
Скорость итерации
Быстрее при больших диапазонах
Может быть медленнее
PreviousКак устроены множества и словари под капотом?NextЧто такое хэш-таблица, хэш, хэш-функция, хэширование?
Last updated
Was this helpful?