В этом кратком руководстве мы рассмотрим, как конвертировать список в строку. Зачем вообще это делать? В Python это обычная практика. Чаще всего это нужно, чтобы вывести содержимое списка в виде строки или чтобы совершить какие-то манипуляции с полученной строкой.
Преобразовать список в строку можно разными способами. Выбор подходящего зависит от ваших предпочтений и специфики вашего кода.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Использование метода join()
Наиболее питоническим способом преобразовать список в строку является использование метода join()
. Он, собственно, для этого и предназначен. Этот метод принимает итерируемый объект, соединяет его элементы и возвращает в виде строки.
Учтите, что значения в итерируемом объекте должны иметь строковый тип данных. В случае, если ваш список содержит элементы типа int
, нужно использовать другой метод.
Синтаксис join()
:
string.join(iterable)
Здесь string
обозначает желаемый разделитель. В качестве параметра – iterable
– выступает любой итерируемый объект: список, кортеж, множество и т.д.
Пример преобразования списка в строку с помощью join()
:
flexiple = ["Hire", "the", "top", "freelancers"] print(" ".join(flexiple)) # Результат: # Hire the top freelancers
В этом коде разделителем был пробел (" "
), поэтому в итоговой строке элементы списка разделены пробелом.
А теперь, в качестве эксперимента, давайте попробуем использовать join()
для объединения элементов списка, когда среди них есть числа. Мы получим TypeError.
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(flexiple)) # Результат: # TypeError: sequence item 3: expected str instance, int found
Примечание редакции: об исключениях в Python читайте в статьях “Ошибки и исключения в Python” и “Как обрабатывать исключения в Python”.
Использование функций join() и map()
Сделать из списка строку можно также с помощью функций map()
и join()
. Такой подход используется, когда итерируемый объект (в нашем случае это список) содержит целочисленное значение.
Поскольку метод join()
объединяет только строковые значения, мы используем метод map()
для преобразования целочисленных значений в строковые.
Метод map()
выполняет какую-то определенную функцию для всех значений в итерируемом объекте. В нашем случае это будет функция str()
, которая преобразует каждое значение в списке в строку.
Синтаксис map()
:
map(function, iterables)
Функция map()
имеет два параметра:
function
– конкретная функция, которую вы хотите выполнить для каждого элемента итерируемого объектаiterables
– итерируемые объекты.
Используя функцию str()
, которая преобразует объекты в строку, мы можем привести целочисленные значения к строковым перед использованием метода join()
.
Пример преобразования списка в строку с помощью map()
:
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(map(str,flexiple))) # Результат: # Hire the top 10 python freelancers
Как из списка сделать строку с помощью цикла
Третий метод преобразования списков в строки в Python – это перебор элементов списка в цикле и добавление их в строку. Я бы не советовал использовать этот метод, поскольку при каждом таком добавлении Python фактически создает новую строку. Такой код будет работать медленно.
Приводим пример только как иллюстрацию того, что в принципе применение цикла возможно:
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] f1 = "" for i in flexiple: f1 += str(i)+ " " print(f1) # Результат: # Hire the top 10 python freelancers
Заключение
Скорее всего преобразовывать список в строку вам придется не единожды, поэтому лучше создать для этого особую функцию.
Как уже говорилось, вы одинаково успешно можете конвертировать список в строку любым из приведенных здесь способов. Просто учитывайте свою ситуацию. Первый подход (метод join()
) можно использовать в том случае, если вы уверены, что значения с списке будут строковыми. Если такой уверенности нет, лучше остановиться на втором подходе (join()
в сочетании с map()
). А последний подход предназначен только для разбора самой концепции преобразования списка в строку.
Когда освоите эти подходы, попробуйте сделать из списка строку с помощью представления списка.
Примечание редакции: о представлениях читайте в статье “List comprehensions и другие comprehensions в Python”.
Перевод статьи «Various methods to convert lists to string in python?».
Доброго времени суток, я вот совсем новечек но код заработал и так. Если не сложно расскажите почему без преобразования в строку.
flexiple = [“Hire”, “the”, “top”, 10, “python”,”freelancers”]
for i in flexiple:
print(i, end=’ ‘)
Пингбэк: Разделение строки в Python