Python: как преобразовать список в строку

Роман Андреев
Технический писатель
19 октября 2022 г.
Время прочтения: 4 минуты

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

Способ №1. Преобразование с использованием функции join()

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

>>> words = ['каждый','охотник','желает','знать','где','сидит','фазан']
>>> print(" ".join(words))
каждый охотник желает знать где сидит фазан
>>> products = ['milk','cheese','bread','sausage','butter','cocoa','eggs']
>>> print(" ".join(products))
milk cheese bread sausage butter cocoa eggs

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

>>> champs = ['топ', 5, 'футбольных', 'чемпионатов', 'Европы', '-', 'Испания', 'Италия', 'Франция', 'Англия', 'Германия']
>>> print(" ".join(champs))
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    print(" ".join(champs))
TypeError: sequence item 1: expected str instance, int found

Всё дело в том, что для корректного вывода здесь нужно выполнить преобразование отдельных элементов в строчные значения, а это реализуется при помощи специальной функции.

Способ №2. Конструкция join() + map()

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

>>> champs = ['топ', 5, 'футбольных', 'чемпионатов', 'Европы', '-', 'Испания', 'Италия', 'Франция', 'Англия', 'Германия']
>>> print(" ".join(map(str,champs)))
топ 5 футбольных чемпионатов Европы - Испания Италия Франция Англия Германия

Итак, при помощи функции join() и разделителя мы вывели элементы списка в виде строки, а функция map() со встроенной функцией str помогла нам объединить элементы разных типов. Рассмотрим еще один пример:

>>> numbers = [3, 5, 7, 9, 11, 13, 15, 17]
>>> print(" ".join(map(str,numbers)))
3 5 7 9 11 13 15 17

Первый способ здесь бы тоже не сработал, поскольку в списке есть числовые значения, поэтому использовали вариант join() + map().

Способ №3. Преобразование при помощи цикла

В данном случае циклическое программирование не самый удобный способ преобразования списка в строку, однако он подойдет для новичков, которые еще не знакомы с большинством функций. Вот как это реализуется при помощи цикла for:

>>> clubs = [7, 'ведущих', 'европейских', 'клубов', '-', 'Реал', 'Барселона', 'МЮ', 'Челси', 'Бавария', 'Милан', 'Ювентус']
>>> string = ' '
>>> for j in clubs:
    string += str(j)+ ' '    
>>> print(string)
7 ведущих европейских клубов - Реал Барселона МЮ Челси Бавария Милан Ювентус

Мы задали список и ввели дополнительную переменную, чтобы реализовать вывод строки (для наглядности переменная получила имя string) после перебора значений с помощью типичной конструкции for.

Как преобразовать строку в список в Python 3

В этой главе рассмотрим обратный процесс преобразования. Операция эта тоже несложная и реализуется с помощью функции split() вот так:

>>> products = 'milk cheese bread sausage butter cocoa eggs'
>>> print(f'products list ={products.split()}')
products list =['milk', 'cheese', 'bread', 'sausage', 'butter', 'cocoa', 'eggs']

Заключение

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

Обратите внимание, что в последнем примере мы использовали f-строки — весьма удобный метод форматирования, появившийся в версии 3.6.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону