Печать содержимого списка на экран средствами Python
Практические приёмы печати списков
Базовый способ показать список на экране, это передать переменную с типом list в функцию print(). Функция преобразует коллекцию в строку, добавляя квадратные скобки и запятые.
numbers = [1, 2, 3]
print(numbers)
Python вывод (вывод данных на экран в python)
[1, 2, 3]
вывод класса python (вывод класса в python)
Такой вариант удобен для быстрой проверки содержимого переменной. Функция print использует представление repr() для элементов, поэтому строки выводятся в кавычках.
Прямой вывод списка строк добавляет кавычки вокруг каждого элемента:
words = ["один", "два"]
print(words)
Python списки вывод (вывод списка в python)
['один', 'два']
форматы вывода python (форматы вывода в python)
Если кавычки нужно убрать, применяется один из способов ниже.
Как сделать построчный вывод элементов списка?
Цикл for последовательно получает каждый элемент. На каждой итерации функция print() выводит значение и переводит курсор на новую строку.
fruits = ["яблоко", "банан", "апельсин"]
for item in fruits:
print(item)
яблоко банан апельсин
Такой подход даёт полный контроль над форматом. Внутри цикла можно добавить номер, дополнительный текст или изменить разделитель.
Если внутри цикла вызывать print с параметром end=' ', элементы окажутся в одной строке. После завершения цикла автоматический перенос не появляется.
for item in [1, 2, 3]:
print(item, end=' ')
1 2 3
Как превратить список в строку с разделителем?
Метод join() применяется к строке-разделителю и принимает итерируемый объект. Все элементы должны быть строками.
colors = ["красный", "зелёный", "синий"]
line = ", ".join(colors)
print(line)
красный, зелёный, синий
Этот способ удобен для подготовки данных к записи в файл, для CSV или для отображения в интерфейсе.
Ошибка возникает, если список содержит числа:
numbers = [10, 20, 30]
print(", ".join(numbers))
TypeError: sequence item 0: expected str instance, int found
Числа предварительно превращают в строки через map(str, numbers) или генератор списка.
numbers = [10, 20, 30]
line = ", ".join(map(str, numbers))
print(line)
10, 20, 30
Как вывести элементы без скобок и кавычек?
Оператор * перед именем списка разворачивает содержимое в отдельные аргументы функции print(). Параметр sep задаёт разделитель.
row = [1, 2, 3]
print(*row)
1 2 3
row = [1, 2, 3]
print(*row, sep=", ")
1, 2, 3
Вариант подходит для числовых данных и результатов вычислений. Преобразование элементов в строки не требуется.
Если список слишком большой, распаковка создаёт много аргументов для функции. Для миллионов элементов лучше использовать цикл или join.
Как вывести элементы с номерами?
Функция enumerate() возвращает пары индекс и значение. Цикл for с этой функцией позволяет показать порядковый номер.
names = ["Аня", "Борис", "Виктор"]
for index, name in enumerate(names, start=1):
print(index, name)
1 Аня 2 Борис 3 Виктор
Такой формат используют для нумерованных списков, меню или таблиц.
По умолчанию enumerate начинает с 0. Чтобы отсчёт начинался с единицы, передаётся параметр start=1. Без него индекс будет 0, 1, 2.
Вложенные списки и модуль pprint
Для многоуровневых структур стандартный print() может не показывать вложенность достаточно наглядно. Модуль pprint умеет переносить строки и выравнивать элементы.
from pprint import pprint
data = [
["код", "название", "цена"],
[101, "ручка", 15.5],
[102, "карандаш", 8.0],
]
pprint(data, width=30)
[['код', 'название', 'цена'], [101, 'ручка', 15.5], [102, 'карандаш', 8.0]]
Параметр width задаёт максимальную ширину строки. Если структура слишком длинная, pprint разбивает её на части.
Модуль pprint предназначен для вывода в консоль, а не для формирования чистых данных. Для сохранения в файл лучше использовать json.dumps или стандартный join.
Числа с выравниванием и разделителем
Форматная спецификация f-строки позволяет выровнять числа по ширине. Это удобно при создании таблиц.
squares = [x * x for x in range(1, 6)]
line = " | ".join(f"{x:>3}" for x in squares)
print(line)
1 | 4 | 9 | 16 | 25
Выражение f"{x:>3}" добавляет пробелы слева, чтобы каждое число занимало не менее трёх символов. Метод join собирает все части в одну строку.
Перевод строки как разделитель
Оператор * распаковывает список в аргументы. Если задать sep="\n", то между элементами будет перевод строки.
letters = ["а", "б", "в"]
print(*letters, sep="\n")
а б в
Такой способ заменяет цикл for, когда требуется просто поместить элементы на отдельные строки.
Смешанные данные
Список может содержать числа, строки и другие типы. Метод join требует строки, поэтому каждый элемент преобразуется через map(str, ...).
mixed = [1, "два", 3.0]
line = " - ".join(map(str, mixed))
print(line)
1 - два - 3.0
Для списков с большим количеством элементов map преобразует элементы по одному, а итоговая строка собирается методом join.
Выборочный вывод элементов
Цикл с условием помогает напечатать не весь список, а только значения, соответствующие критерию.
numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
if number % 2 == 0:
print(number, end=" ")
2 4 6
Условие number % 2 == 0 оставляет чётные числа. Параметр end=" " оставляет элементы в одной строке, но в конце остаётся пробел.
Пробел после последнего числа не всегда желателен. Для аккуратного вывода можно сначала собрать строку через join, а потом напечатать её.
Обратный порядок
Функция reversed() создаёт итератор, который двигается по списку с конца. Оператор * передаёт его элементы в print().
items = ["один", "два", "три"]
print(*reversed(items))
три два один
Такой вариант удобен для быстрого показа списка в обратной последовательности без создания нового списка.
Столбцы из нескольких списков
Функция zip() объединяет элементы двух списков в пары. Это позволяет выводить связанные данные рядом.
left = [1, 2, 3]
right = ["один", "два", "три"]
for a, b in zip(left, right):
print(f"{a}: {b}")
1: один 2: два 3: три
Если списки имеют разную длину, zip останавливается на самом коротком.
Для сохранения всех элементов более длинного списка используется zip_longest из модуля itertools.