Использование range для создания списков в языке Python

Раздел: Основы Python -> Создание списков

Создание списка с помощью range

Функция range() в Python предназначена для генерации последовательности целых чисел. В Python 3 range возвращает специальный объект, который не является списком, но легко преобразуется в список с помощью list(). Это основной инструмент для создания числовых последовательностей.

Основной способ:

numbers = list(range(5))
print(numbers)

Python пустой list (создание пустого списка в python)

[0, 1, 2, 3, 4]

Python list range (создание списка с помощью range в python)

Пример создает список из пяти чисел от 0 до 4. Передача аргумента 5 в range означает, что последовательность включает значения от 0 до 5-1.

Как создать последовательность от 0 до N 1?

Используется range(stop). Единственный аргумент задает конечную границу, не включая её.

lst = list(range(10))
print(lst)

List 1 1 2 2 python (генерация списка с повторяющимися элементами)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Python array 1 (массив с единицами в python)

Как получить список чисел в заданном интервале?

Передаются два аргумента: range(start, stop). Первый определяет начальное значение, второй - границу.

lst = list(range(5, 12))
print(lst)
[5, 6, 7, 8, 9, 10, 11]

Как задать шаг приращения?

Третий аргумент step определяет разницу между соседними числами.

lst = list(range(0, 20, 3))
print(lst)
[0, 3, 6, 9, 12, 15, 18]

Как получить убывающую последовательность?

Отрицательное значение step создает обратный порядок. Важно, чтобы start было больше stop.

lst = list(range(10, 0, -2))
print(lst)
[10, 8, 6, 4, 2]

Что произойдет при равных start и stop?

Результатом будет пустой список, так как диапазон не содержит чисел.

lst = list(range(5, 5))
print(lst)
[]

Как создать список, изменяя значения из range?

Списковое включение (list comprehension) позволяет трансформировать каждый элемент.

lst = [x * 2 for x in range(5)]
print(lst)
[0, 2, 4, 6, 8]

Как использовать range в цикле без создания списка?

Объект range является итерируемым, можно применять в for напрямую.

for i in range(3):
    print(i, end=' ')
0 1 2

Как получить кортеж или множество из range?

Функции tuple() и set() тоже принимают range.

tup = tuple(range(4))
st = set(range(4))
print(tup, st)
(0, 1, 2, 3) {0, 1, 2, 3}

Типичные проблемы и ошибки

Различие range в Python 2 и 3: В Python 2 range возвращал список, в Python 3 - объект range. Использование range как списка может привести к неожиданному поведению, если ожидать методы списка. Решение - явно преобразовывать через list().

Попытка использования нецелых чисел: range не принимает float. Ошибка TypeError.

# list(range(1.5, 5.5)) # TypeError

Для вещественных чисел применяются другие инструменты, например, numpy.arange или собственная функция.

Большие диапазоны и память: Создание списка из огромного range (миллионы элементов) может исчерпать оперативную память. Обработку лучше вести итеративно по самому range.

Непопадание в конечное значение: При заданном шаге последнее число может не совпадать с stop. Например, range(0,10,3) дает [0,3,6,9], 9 меньше 10, 12 уже выходит за границу. Это ожидаемое поведение.

Пустой список при start > stop и положительном шаге: Если начальное значение больше конечного, а шаг положительный, список будет пустым. Аналогично для отрицательного шага, если start < stop.

Расширенные примеры использования range

В этом разделе приведены неочевидные и комбинированные сценарии применения range для создания списков.

Пример 1: Список чисел от 0 до N с произвольным шагом

Пример
lst = list(range(2, 18, 3))
print(lst)
[2, 5, 8, 11, 14, 17]

Пример 2: Обратный порядок с шагом 1

Пример
lst = list(range(10, -1, -1))
print(lst)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Пример 3: Квадраты чисел

Пример
squares = [x**2 for x in range(1, 11)]
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Пример 4: Список четных чисел

Пример
evens = list(range(0, 20, 2))
print(evens)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Пример 5: Список индексов и элементов (enumerate)

Пример
colors = ['red', 'green', 'blue']
indexed = list(enumerate(colors))
print(indexed)
# или создание списка пар с помощью range
pairs = [(i, colors[i]) for i in range(len(colors))]
print(pairs)
[(0, 'red'), (1, 'green'), (2, 'blue')]
[(0, 'red'), (1, 'green'), (2, 'blue')]

Пример 6: Использование range для разбиения списка на части

Пример
full = list(range(1, 11))
chunk_size = 3
chunks = [full[i:i+chunk_size] for i in range(0, len(full), chunk_size)]
print(chunks)
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

Пример 7: Создание многомерного списка (матрицы)

Пример
rows, cols = 3, 4
matrix = [[i * cols + j for j in range(cols)] for i in range(rows)]
print(matrix)
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

Пример 8: Range в сочетании с map

Пример
str_numbers = list(map(lambda x: f'Number {x}', range(1, 6)))
print(str_numbers)
['Number 1', 'Number 2', 'Number 3', 'Number 4', 'Number 5']

Пример 9: Range с отрицательным шагом и неполным покрытием

Пример
lst = list(range(20, 0, -3))
print(lst)
[20, 17, 14, 11, 8, 5, 2]

Число 0 не включено, так как шаг -3 пропускает его.

Пример 10: Создание списка из range и срез

Пример
r = range(10)
sublist = list(r)[3:7]
print(sublist)
[3, 4, 5, 6]

Пример 11: Использование range для тестирования производительности

Пример
import time
n = 1000000
start = time.time()
lst = list(range(n))
end = time.time()
print(f'Создание списка из {n} элементов заняло {end-start:.4f} сек.')
Создание списка из 1000000 элементов заняло 0.0562 сек. (результат может отличаться)

Создание списка с помощью range в Python - comments

En
Python list range (python)