Основы Python: как использовать range для генерации числовых последовательностей
Функция range в Python: основы и варианты использования
Основной способ: range(start, stop, step)
Наиболее гибкий вызов функции range включает три аргумента: начальное значение, конечное значение (не включается) и шаг. Этот вариант покрывает все остальные как частные случаи.
for i in range(2, 10, 3):
print(i, end=' ')Return b print python (возврат и печать в python)
2 5 8
Python a b c треугольник (вычисление треугольника по сторонам в python)
Пояснение: последовательность начинается с 2, заканчивается перед 10, шаг 3. Элементы: 2, 5, 8.
Типичные ошибки:
- Передача нецелых чисел - приводит к TypeError.
- Нулевой шаг - исключение ValueError.
- Шаг положительный, но start >= stop - пустой range.
Как создать последовательность чисел от 0 до заданного значения?
Используйте range(stop) - самый простой вызов с одним аргументом. Генерирует числа от 0 до stop-1.
for i in range(5):
print(i)сумма a и b python (сумма двух чисел в python)
0 1 2 3 4
Range a b python (функция range в python)
Ошибки:
Если stop не целое число - TypeError. Если stop <= 0 - пустой range, цикл не выполнится.
Как получить числа от A до B-1?
Примените range(start, stop) с двумя аргументами. Шаг по умолчанию равен 1.
for i in range(3, 7):
print(i)
3 4 5 6
Проблемы:
Если start >= stop при положительном шаге, последовательность пуста. Убедитесь, что start меньше stop.
Как задать произвольный шаг и получить числа с определённым интервалом?
Используйте range(start, stop, step) с тремя аргументами. Шаг может быть как положительным, так и отрицательным.
for i in range(0, 15, 4):
print(i)
0 4 8 12
Распространённые ошибки:
- Шаг равен 0 - ValueError.
- Шаг положительный, но start > stop - пустой range.
- Шаг отрицательный, но start < stop - также пустой range.
- Все аргументы должны быть целыми числами.
Как перебрать числа от большего к меньшему (обратный порядок)?
Передайте отрицательный шаг. Например, range(10, 0, -2) даст 10, 8, 6, 4, 2.
for i in range(10, 0, -2):
print(i, end=' ')
10 8 6 4 2
Замечание:
Важно помнить, что stop не включается, поэтому для включения 0 нужно указать stop = -1 (или 0, если шаг 1).
Как получить список чисел из range?
Оберните range в list(). Это создаст список всех элементов последовательности.
nums = list(range(2, 8, 2))
print(nums)
[2, 4, 6]
Ошибки:
Преобразование большого range в список может потребовать много памяти. range - ленивая последовательность, а список хранит все элементы.
Цели и случаи использования каждого варианта:
- range(stop) - для цикла с известным количеством итераций, когда индекс начинается с 0.
- range(start, stop) - когда нужен сдвиг начального значения, например, для обхода части списка.
- range(start, stop, step) - для выборки элементов с шагом (чётные, нечётные, каждый третий).
- range с отрицательным шагом - для перебора в обратном направлении.
- list(range(...)) - когда необходим именно список для изменений, индексации или передачи функциям, ожидающим список.
Расширенные примеры работы с range
Пример 1: обход индексов списка с range и len
lst = ['a', 'b', 'c', 'd']
for i in range(len(lst)):
print(f"Index {i}: {lst[i]}")
Index 0: a Index 1: b Index 2: c Index 3: d
Пример 2: генерация списка квадратов чисел от 1 до 10 с шагом 2
squares = [x**2 for x in range(1, 11, 2)]
print(squares)
[1, 9, 25, 49, 81]
Пример 3: range с отрицательным шагом для убывания с включением границ
for i in range(10, -1, -1):
print(i, end=' ')
10 9 8 7 6 5 4 3 2 1 0
Пример 4: проверка принадлежности числа к диапазону (экономит память)
print(5 in range(0, 10))
print(15 in range(0, 10))
True False
Пример 5: создание range с большим шагом и преобразование в список
big = list(range(0, 100, 25))
print(big)
[0, 25, 50, 75]
Пример 6: использование range для генерации числовых меток времени (например, каждые 10 минут)
for minute in range(0, 60, 10):
print(f"{minute:02d}:00")
00:00 10:00 20:00 30:00 40:00 50:00
Пример 7: range с длинными последовательностями - демонстрация ленивого вычисления
r = range(10**12) # не занимает память
print(r)
print(999_999_999_999 in r) # быстрая проверка
range(0, 1000000000000) True
Пример 8: ошибка при нулевом шаге
try:
for i in range(0, 5, 0):
pass
except ValueError as e:
print(e)
range() arg 3 must not be zero
Пример 9: использование range с отрицательным шагом и началом меньше конца - пустой результат
r = range(0, 5, -1)
print(list(r))
[]
Пример 10: сравнение range и xrange в Python 2 (для исторического контекста)
# В Python 3 range полностью аналогичен xrange из Python 2.
# xrange возвращал итератор, а range - список.
print(type(range(5)))
<class 'range'>