Урок 19 range()

Генерация последовательностей чисел

⏱ ~8 мин чтения· 📘 Базовый

Три формы range()

range(stop) — числа от 0 до stop-1:

for i in range(5):
    print(i, end=" ")   # 0 1 2 3 4

range(start, stop) — от start до stop-1:

for i in range(2, 7):
    print(i, end=" ")   # 2 3 4 5 6

range(start, stop, step) — с шагом step:

for i in range(0, 10, 2):
    print(i, end=" ")   # 0 2 4 6 8

for i in range(10, 0, -2):
    print(i, end=" ")   # 10 8 6 4 2

range() в цикле for

Самое частое применение — повторение N раз:

for i in range(3):
    print("Hello")  # Hello Hello Hello

range(len()) — перебор по индексам

Чтобы получить и индекс символа, и сам символ, используют range(len()) — здесь len() возвращает длину строки, а word[i] обращается к символу по индексу i:

word = "банан"
for i in range(len(word)):
    print(i, word[i])

# Вывод:
# 0 б
# 1 а
# 2 н
# 3 а
# 4 н

Особенности range()

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

Кроме того, у range можно получить длину и обратиться к его элементам по индексу:

# range — это отдельный тип
r = range(1000000)
print(type(r))  # <class 'range'>
print(len(r))   # 1000000
print(r[0])     # 0
print(r[-1])    # 999999