Как вывести список в Python

А вы знаете, что вывести на экран список в Python можно несколькими способами? В этой статье мы разберем несколько приемов распечатки списка.

Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.

11 способов вывести список на экран в Python

1. Вывод списка при помощи *

Чтобы распечатать список список с использованием оператора *, нужно использовать функцию print() следующим образом:

print(*list_name)

Элементы будут выведены через пробел, как при использовании print() с несколькими аргументами. Например:

pokemon_list = ['Pikachu', 'Abra', 'Charmander']
print(*pokemon_list)

# Результат:
# Pikachu Abra Charmander

Оператор * также можно использовать для распаковки списка при вызове функции, принимающей несколько аргументов:

def print_pokemon(pokemon1, pokemon2, pokemon3):
    print(pokemon1)
    print(pokemon2)
    print(pokemon3)
   
print_pokemon(*pokemon_list)

Вывод:

Pikachu
Abra
Charmander

2. Вывод списка Python с разделителями между элементами

Чтобы вывести список с определенными разделителями, можно использовать представление списка внутри функции print():

print(*[item + '\n' for item in pokemon_list])

Символ новой строки \n, добавленный после каждого элемента, гарантирует, что каждый элемент будет выведен на отдельной строке:

Pikachu
 Abra
 Charmander

Помните, что в качестве разделителя можно использовать любую строку. Например, чтобы элементы списка отделялись друг от друга запятой и пробелом, можно использовать следующий синтаксис:

print(*[item + ', ' for item in pokemon_list])

# Результат:
# Pikachu,  Abra,  Charmander,

Обратите внимание, что за последним элементом тоже будут идти запятая и пробел, а вам этого может и не хотеться.

3. Как вывести список без разделителя в конце

Чтобы избежать этой ловушки, можно использовать выражение if внутри представления списка. Таким образом можно указать добавлять разделитель после всех элементов, кроме последнего. Вот как это выглядит:

print(*[item + (', ' if i < len(pokemon_list)-1 else '') for i, item in enumerate(pokemon_list)])

# Результат:
# Pikachu,  Abra,  Charmander

Чтобы вывести список с разделителями, но без разделителя в конце, также можно использовать функцию print() с именованным аргументом sep. Элементы будут разделены запятой и пробелом:

print(*pokemon_list, sep=', ')

# Результат:
# Pikachu, Abra, Charmander

Обратите внимание, что print() автоматически добавляет пробел после каждого элемента, так что его можно не включать в строку разделителя.

Как уже упоминалось, разделителем может быть любая строка, например, дефис:

print(*pokemon_list, sep='-')

# Результат:
# Pikachu-Abra-Charmander

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

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

print(*pokemon_list, sep=', ', end='')

# Результат:
# Pikachu, Abra, Charmander

4. Вывод списка при помощи join()

Чтобы вывести список с использованием метода join(), нужно применить следующий синтаксис:

print(separator.join(list_name))

Элементы списка будут объединены в одну строку со строкой-разделителем между ними (separator). Например, чтобы вывести список покемонов через запятую и пробел, можно написать такой код:

print(', '.join(pokemon_list))

# Результат:
# Pikachu, Abra, Charmander

Если хотите добавить строку до или после списка, можно воспользоваться оператором + для конкатенации строк:

print('Pokemons: ' + ', '.join(pokemon_list))

# Результат:
# Pokemons: Pikachu, Abra, Charmander

5. Конвертация списка в строку с последующим выводом

Можно сперва преобразовать список в строку, а затем вывести его. Для конвертации используется функция str():

print(str(pokemon_list))

Список будет выведен как строка, элементы будут заключены в квадратные скобки и разделены запятыми:

['Pikachu', 'Abra', 'Charmander']

6. Вывод элементов списка с их индексами

Для распечатки списка с индексами элементов можно воспользоваться функцией enumerate() и циклом for:

for i, pokemon in enumerate(pokemon_list):
    print(i, pokemon)

Результат:

0 Pikachu
1 Abra
2 Charmander

От редакции Pythonist: подробнее об enumerate() читайте в статье «Как работает функция enumerate() в Python?».

Функция enumerate() возвращает итератор, который производит кортежи, содержащие индекс и значение каждого элемента списка. При помощи цикла for можно перебрать эти кортежи и вывести индексы со значениями.

Используя вариацию одного из уже рассмотренных способов вывода списка, мы можем настроить вывод индексов и значений. Например:

for i, pokemon in enumerate(pokemon_list):
    print('{}: {}'.format(i, pokemon))

Результат:

0: Pikachu
1: Abra
2: Charmander

Также можно использовать представление списка для создания нового списка строк с отформатированными индексами и значениями всех элементов, а затем применить print() для вывода:

result = ['{}: {}'.format(i, pokemon) for i, pokemon in enumerate(pokemon_list)]
print(result)

# Результат:
# ['0: Pikachu', '1: Abra', '2: Charmander']

Помните, что функция enumerate() возвращает индекс каждого элемента, начиная с 0. Если вы хотите, чтобы индексация начиналась с другого числа, вы можете передать его функции в качестве аргумента. Например:

for i, pokemon in enumerate(pokemon_list, 1):
    print('{}: {}'.format(i, pokemon))

Результат:

1: Pikachu
2: Abra
3: Charmander

7. Вывод сразу двух списков

Чтобы вывести два списка таким образом, чтобы их элементы выстроились попарно, нужно проитерировать оба списка в одном цикле. Для этого можно использовать цикл for и функцию zip().

От редакции Pythonist: о функции zip() предлагаем почитать в статье «Используем zip() для парной итерации».

Функция zip() возвращает итератор. Этот итератор производит кортежи из элементов, стоящих на одинаковых позициях в списках. Полученные кортежи можно перебрать в цикле и распечатать элементы.

Пример:

a = ['a1', 'a2', 'a3']
b = ['b1', 'b2', 'b3']
for x, y in zip(a, b):
    print(x, y)

Результат:

a1 b1
a2 b2
a3 b3

При помощи представления списка также можно создать новый список со спаренными элементами двух исходных, а затем вывести его:

a = ['a1', 'a2', 'a3']
b = ['b1', 'b2', 'b3']
result = [x + y for x, y in zip(a, b)]
print(result)

# Результат:
# ['a1b1', 'a2b2', 'a3b3']

Важно помнить, что функция zip() перебирает элементы списков только пока они не исчерпаются в самом коротком списке. Если ваши списки разной длины, не все элементы более длинного списка попадут в вывод. Например:

a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
for x, y in zip(a, b):
    print(x, y)

Результат:

a1 b1
a2 b2

Если вы хотите включить все элементы более длинного списка, можно вместо недостающих элементов более короткого списка использовать значения None. Для этого применяется функция itertools.zip_longest() из модуля itertools. Например:

import itertools
 
a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
 
for x, y in itertools.zip_longest(a, b):
    print(x, y)

Результат:

a1 b1
a2 b2
a3 None

8. Как вывести вложенный список Python

Для вывода вложенного списка можно сначала перебрать в цикле элементы внешнего списка, а затем, в другом цикле, перебрать элементы внутреннего. Например:

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
 
for sublist in nested_list:
    for item in sublist:
        print(item)

Результат:

1
2
3
4
5
6
7
8
9

Списки также можно вывести на разных строках:

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for sublist in nested_list:
    print(*sublist, sep=",")

Вывод:

1,2,3
4,5,6
7,8,9

Еще можно создать новый список из элементов вложенного при помощи list comprehension и вывести его при помощи print():

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = [item for sublist in nested_list for item in sublist]

# Результат:
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

9. Использование pprint()

Еще можно использовать модуль pprint, который предоставляет функцию pprint() для красивой распечатки списков и других структур данных:

import pprint
 
pokemon_list = ['Pikachu', 'Abra', 'Charmander']
pprint.pprint(pokemon_list)

# Результат:
# ['Pikachu', 'Abra', 'Charmander']

10. Использование dumps()

Для вывода списка можно применить модуль json, в котором есть функция dumps(). Она может конвертировать список в строку JSON:

import json
 
pokemon_list = ['Pikachu', 'Abra', 'Charmander']
print(json.dumps(pokemon_list))

# Результат:
# ["Pikachu", "Abra", "Charmander"]

11. Вывод списка при помощи f-строк

И, наконец, можно использовать f-строки (доступно в Python 3.6 и более новых версиях). Этот функционал позволяет встраивать выражения в строковые литералы при помощи плейсхолдера {}:

for pokemon in pokemon_list:
    print(f'{pokemon} is a pokemon')

Результат:

Pikachu is a pokemon
Abra is a pokemon
Charmander is a pokemon

От редакции Pythonist: об f-строках читайте в статье «Форматирование строк в Python: format() и f-строки».

Перевод статьи «Printing a List in Python – 10 Tips and Tricks».

Прокрутить вверх