Под списком в языке Python понимают набор объектов любого типа, которые синтаксически упорядочены (это реализуется при помощи квадратных скобок и запятых). Этот тип хранения данных весьма удобен, однако иногда бывает необходимо преобразовать элементы списка в строку Python. Это можно сделать несколькими способами, которые мы и рассмотрим в данной статье. Но сначала заметим, что некоторые из этих способов равны по возможностям, и выбор здесь определяется привычками или опытом программиста.
Это самый популярный метод трансформирования списка в строку, а выполняется он при помощи функции 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
Всё дело в том, что для корректного вывода здесь нужно выполнить преобразование отдельных элементов в строчные значения, а это реализуется при помощи специальной функции.
клауд
Исключить ошибку выше поможет данный способ, в котором задействуется еще одна функция, 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()
.
В данном случае циклическое программирование не самый удобный способ преобразования списка в строку, однако он подойдет для новичков, которые еще не знакомы с большинством функций. Вот как это реализуется при помощи цикла for
:
>>> clubs = [7, 'ведущих', 'европейских', 'клубов', '-', 'Реал', 'Барселона', 'МЮ', 'Челси', 'Бавария', 'Милан', 'Ювентус']
>>> string = ' '
>>> for j in clubs:
string += str(j)+ ' '
>>> print(string)
7 ведущих европейских клубов - Реал Барселона МЮ Челси Бавария Милан Ювентус
Мы задали список и ввели дополнительную переменную, чтобы реализовать вывод строки (для наглядности переменная получила имя string) после перебора значений с помощью типичной конструкции for
.
В этой главе рассмотрим обратный процесс преобразования. Операция эта тоже несложная и реализуется с помощью функции split()
вот так:
>>> products = 'milk cheese bread sausage butter cocoa eggs'
>>> print(f'products list ={products.split()}')
products list =['milk', 'cheese', 'bread', 'sausage', 'butter', 'cocoa', 'eggs']
Размещайте Python-проекты на облачных серверах
Мы рассмотрели преобразование элементов списков в строчные значения и наоборот.
Обратите внимание, что в последнем примере мы использовали f-строки — весьма удобный метод форматирования, появившийся в версии 3.6.