Как корректно вывести range в Python: способы и примеры

Раздел: Встроенные функции -> Итерация и вывод

Вывод диапазона range в Python с помощью print

Функция range создает неизменяемую последовательность чисел, но ее нельзя напрямую вывести через print как готовый список. Для отображения элементов range требуется преобразование или итерация. Рассмотрим основной и альтернативные способы.

Как вывести range в виде списка?

Самый простой способ - преобразовать range в список с помощью list() и передать его в print.

r = range(5)
print(list(r))

Print range python (вывод range в python)

[0, 1, 2, 3, 4]

Этот вариант удобен, когда нужен именно список для дальнейшей работы. Если требуется просто посмотреть элементы, можно использовать распаковку через звездочку.

print(*range(5))
0 1 2 3 4

Распаковка передает каждый элемент как отдельный аргумент, print выводит их через пробел по умолчанию.

Как вывести каждый элемент range на новой строке?

Использовать цикл for с вызовом print для каждого значения.

for i in range(3):
    print(i)
0
1
2

Метод подходит, если нужно выполнить дополнительные действия с каждым числом или задать свой разделитель.

Типичная ошибка:

Начинающие часто пишут print(range(5)) и получают range(0, 5) вместо списка. Это происходит потому, что print выводит строковое представление объекта range, а не его содержимое. Решение - преобразование в список или итерация.

Как вывести range в обратном порядке?

Обернуть range в функцию reversed().

print(list(reversed(range(5))))
[4, 3, 2, 1, 0]

Также можно использовать range(4, -1, -1).

Как вывести range с заданным шагом?

Третий аргумент range определяет шаг.

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

Как вывести range без скобок и запятых, в одну строку с разделителем?

Распаковка *range с параметром sep.

print(*range(5), sep=' | ')
0 | 1 | 2 | 3 | 4

Как вывести range с форматированием (например, через запятую с пробелом)?

Преобразовать каждый элемент в строку и объединить методом join.

print(', '.join(map(str, range(5))))
0, 1, 2, 3, 4

Как вывести range в файл?

Аргумент file в print.

with open('output.txt', 'w') as f:
    print(*range(10), file=f)

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

Проблема: большой range занимает много памяти при преобразовании в список.

Если range огромный (например, range(10**7)), вызов list() создаст список, который может исчерпать оперативную память. В таких случаях лучше использовать итерацию или распаковку (но print все равно может не справиться с миллионами аргументов). Для больших последовательностей стоит выводить частями или использовать генераторы.

Расширенные примеры вывода range

Пример
# Пример 1: Вывод range с шагом и отрицательными значениями
r = range(-10, 10, 3)
print(list(r))
[-10, -7, -4, -1, 2, 5, 8]
Пример
# Пример 2: Вывод range как кортеж (менее распространенный)
print(tuple(range(6)))
(0, 1, 2, 3, 4, 5)
Пример
# Пример 3: Вывод range с помощью генератора списков для дополнительной обработки
r = [x**2 for x in range(5)]
print(r)
[0, 1, 4, 9, 16]
Пример
# Пример 4: Вывод range в столбик с номерами строк
for idx, val in enumerate(range(3, 8)):
    print(f'Индекс {idx}: значение {val}')
Индекс 0: значение 3
Индекс 1: значение 4
Индекс 2: значение 5
Индекс 3: значение 6
Индекс 4: значение 7
Пример
# Пример 5: Вывод range в одну строку без пробелов
print(''.join(map(str, range(10))))
0123456789
Пример
# Пример 6: Вывод range с помощью sys.stdout.write (низкоуровневый)
import sys
sys.stdout.write(str(list(range(5))))
[0, 1, 2, 3, 4]
Пример
# Пример 7: Вывод range, но только четные числа через filter
r = list(filter(lambda x: x%2==0, range(10)))
print(r)
[0, 2, 4, 6, 8]
Пример
# Пример 8: Вывод range в обратном порядке через срез списка
print(list(range(10))[::-1])
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Пример
# Пример 9: Вывод range с пользовательским разделителем и в файл
with open('numbers.txt', 'w') as f:
    f.write(' - '.join(map(str, range(1, 6))))
В файле numbers.txt: 1 - 2 - 3 - 4 - 5
Пример
# Пример 10: Вывод range в строку с помощью f-строки
r = range(4)
print(f"Элементы: {list(r)}")
Элементы: [0, 1, 2, 3]

Вывод range в Python - comments

En
Print range python (python)