Диапазон (range) — это встроенный тип в Python, представляющий неизменяемую (immutable) последовательность чисел. Это не список, а специальный объект, который генерирует числа "на лету" (лениво), что делает его очень эффективным по памяти.
numbers = range(5) # Создаем диапазон от 0 до 4
print(numbers) # range(0, 5)
range(stop) # от 0 до stop-1 с шагом 1
range(start, stop) # от start до stop-1 с шагом 1
range(start, stop, step) # от start до stop-1 с заданным шагом
# Простой диапазон
r1 = range(5) # 0, 1, 2, 3, 4
# С указанием начала
r2 = range(2, 6) # 2, 3, 4, 5
# С шагом
r3 = range(0, 10, 2) # 0, 2, 4, 6, 8
# Отрицательный шаг
r4 = range(5, 0, -1) # 5, 4, 3, 2, 1
Диапазон нельзя изменить после создания:
r = range(3)
r[0] = 10 # TypeError: 'range' object does not support item assignment
Диапазон не хранит все числа в памяти, а вычисляет их по необходимости:
large_range = range(1_000_000)
print(sys.getsizeof(large_range)) # Всего 48 байт (не зависит от размера)
Числа генерируются только при итерации или явном запросе:
for i in range(3):
print(i) # Числа создаются в момент итерации
Самое распространенное применение:
for i in range(3):
print(f"Итерация {i}")
Явное преобразование в последовательность:
numbers = list(range(5)) # [0, 1, 2, 3, 4]
Диапазоны поддерживают операции индексирования:
r = range(10, 20)
print(r[0]) # 10
print(r[-1]) # 19
print(r[2:5]) # range(12, 15)
r = range(2, 10, 2)
print(r.start) # 2 (начальное значение)
print(r.stop) # 10 (конечное значение, не включается)
print(r.step) # 2 (шаг)
5 in range(10) # True
15 in range(10) # False
Диапазон работает только с целыми числами:
range(1.5, 5.5) # TypeError: 'float' object cannot be interpreted as an integer
Можно использовать отрицательные значения:
range(-5, 0) # -5, -4, -3, -2, -1
Не поддерживаются - нужно указывать конечное значение.
Для работы с дробными числами:
import numpy as np
np.arange(0, 1, 0.1) # [0.0, 0.1, 0.2, ..., 0.9]
Для сложных последовательностей:
(i**2 for i in range(5)) # Генератор квадратов чисел
Диапазон — это оптимальный выбор при работе с последовательностями целых чисел в Python.