Что из себя представляют 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?