Как вывести содержимое range на экран
Печать значений range
В Python 3 range возвращает объект неизменяемой последовательности целых чисел. Вызов print(range(5)) отображает 'range(0, 5)', но не элементы. Для вывода содержимого range применяется преобразование в list или распаковка.
Основной способ увидеть элементы range состоит в преобразовании его в список.
print(list(range(5)))Print range python 3 (вывод range в python 3)
[0, 1, 2, 3, 4]
Если нужен компактный вывод без скобок, используется оператор распаковки *:
print(*range(5))
0 1 2 3 4
Звёздочка передаёт каждый элемент range как отдельный аргумент функции print.
Как получить список из range для последующего вывода?
Подходит встроенная функция list, которая создаёт список со всеми числами.
numbers = list(range(2, 12, 3))
print(numbers)
[2, 5, 8, 11]
Список полезен, когда нужны операции индексации, срезы или изменение элементов. Для больших диапазонов память расходуется существенно.
Как напечатать элементы range через пробел без дополнительных знаков?
Оператор распаковки * решает задачу. Функция print по умолчанию вставляет пробел между аргументами.
print(*range(6))
0 1 2 3 4 5
Параметр sep меняет разделитель:
print(*range(4), sep='-')
0-1-2-3
Как вывести каждый элемент range на отдельной строке?
Цикл for перебирает значения range напрямую.
for i in range(5, 8):
print(i)
5 6 7
Для вывода в одну строку с нужным окончанием применяется параметр end.
for i in range(4):
print(i, end=' ')
0 1 2 3
Как вывести range с запятой или другим разделителем без цикла?
Превращение чисел в строки и метод join дают полный контроль над форматом.
print(', '.join(map(str, range(7))))
0, 1, 2, 3, 4, 5, 6
Функция map преобразует каждое число в строку, метод join объединяет их через заданный разделитель.
Можно ли вывести range в виде кортежа?
Да, для этого существует функция tuple.
print(tuple(range(3)))
(0, 1, 2)
Кортеж занимает меньше места, чем список, но тоже хранит все элементы сразу.
Распространённая ошибка связана с попыткой получить элементы через print(range(...)). В Python 3 такой вызов показывает только описание объекта. Нужно явно преобразовывать range в list или распаковывать через *.
Создание списка из огромного range может исчерпать память. Если элементы нужны по одному, лучше выполнять обработку в цикле. Передача большого range через * также создаёт много аргументов и способна вызвать переполнение.
Практические примеры вывода range
Ниже приведены разные сценарии использования range с печатью. Все примеры выполняются в Python 3.
Базовое преобразование в список:
print(list(range(5)))
[0, 1, 2, 3, 4]
Отрицательный шаг для обратного порядка:
print(list(range(10, 0, -2)))
[10, 8, 6, 4, 2]
Распаковка с нестандартным разделителем:
print(*range(1, 6), sep=' -> ')
1 -> 2 -> 3 -> 4 -> 5
Строка ' -> ' подставлена между элементами.
Метод join для формирования строки:
print(' + '.join(map(str, range(1, 5))))
1 + 2 + 3 + 4
Матрица из нескольких строк range:
for row in range(3):
print(*range(row * 3, row * 3 + 3))
0 1 2 3 4 5 6 7 8
Печать только чётных чисел:
for number in range(10):
if number % 2 == 0:
print(number)
0 2 4 6 8
Список квадратов чисел из range:
print([x * x for x in range(5)])
[0, 1, 4, 9, 16]
Кортеж из range и проверка его типа:
print(tuple(range(4)))
print(type(range(4)))
(0, 1, 2, 3) <class 'range'>
Срез диапазона range:
r = range(10)
print(list(r[2:5]))
[2, 3, 4]
Срез возвращает новый объект range, поэтому требуется преобразование в список для просмотра.
Использование enumerate для пар индекс значение:
for idx, value in enumerate(range(5, 10)):
print(idx, value)
0 5 1 6 2 7 3 8 4 9
Дробные значения, полученные из range:
print([x / 10 for x in range(0, 10)])
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
Объединение нескольких диапазонов при печати:
print(*range(2), *range(5, 7))
0 1 5 6
Оператор * применим к каждому диапазону отдельно.
Генерация строки битов:
print(''.join(str(b) for b in range(2)))
01
Построчная печать с индексами строк:
for i in range(3):
print(f'Строка {i}:', *range(i * 2, i * 2 + 2))
Строка 0: 0 1 Строка 1: 2 3 Строка 2: 4 5