Напишем программу на языке Python для преобразования списка в строку. Существуют различные ситуации, когда нам дается список, и нам нужно преобразовать его в строку. Например, преобразование в строку из списка строк и/или списка целых чисел.
Пример:
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Input: ['Geeks', 'for', 'Geeks'] Output: Geeks for Geeks Input: ['I', 'want', 4, 'apples', 'and', 18, 'bananas'] Output: I want 4 apples and 18 bananas
Давайте рассмотрим различные способы преобразования списка в строку.
Метод №1: Итерация по списку и продолжение добавления элемента для каждого индекса в итоговую строковую переменную.
def listToString(s): # создаем пустую строку result = "" # итерируемся по списку for elem in s: result += elem # возвращаем результат return result s = ['Geeks', 'for', 'Geeks'] print(listToString(s))
Вывод:
GeeksforGeeks
Метод №2: Использование метода .join()
def listToString(s): # задаем переменную, которая будет служить разделителем # между объединенными элементами массива separator = " " result = separator.join(s) return result s = ['Geeks', 'for', 'Geeks'] print(listToString(s))
Вывод:
Geeks for Geeks
Но что если список содержит в качестве элементов и строки, и целые числа. В этих случаях приведенный выше код выдаст ошибку TypeError. Чтобы ее избежать, нам нужно преобразовать все элементы массива в строку во время добавления к строке.
Метод №3: Использование list comprehension
s = ['I', 'want', 4, 'apples', 'and', 18, 'bananas'] # это и есть list comprehension converted_list = [str(elem) for elem in s] # дальше методом join() соединяем элементы массива listToStr = ' '.join(converted_list) print(listToStr)
Вывод:
I want 4 apples and 18 bananas
Метод №4: Использование map().
Используйте метод map() для применения функции преобразования в строку для каждого елемента массива, который мы потом объединим при помощи .join()
s = ['I', 'want', 4, 'apples', 'and', 18, 'bananas'] # Функция map() применит функцию str() к каждому элементу массива s # и вернет нам список в котором все элементы будут преобразованы к строкам. listToStr = ' '.join(map(str, s)) print(listToStr)
Вывод:
I want 4 apples and 18 bananas
Метод №5: Использование функции enumerate. Этот способ отлично подходит для итерируемых объектов как например результат вызова range(5).
s = ['I', 'want', 4, 'apples', 'and', 18, 'bananas'] # i - индекс элемента и elem - сам элемент, но нам индекс не нужен, # поэтому он не используется и можно заменить на _ listToStr = ' '.join([str(elem) for i, elem in enumerate(s)]) print(listToStr)
Вывод:
I want 4 apples and 18 bananas
Метод №6: Использование оператора in
s = ['Geeks', 'for', 'Geeks'] for i in s: print(i, end=" ")
Вывод:
Geeks for Geeks
Метод №7: Использование метода functools.reduce
from functools import reduce s = ['I', 'want', 4, 'apples', 'and', 18, 'bananas'] listToStr = reduce(lambda a, b : a+ " " +str(b), s) print(listToStr)
Вывод:
I want 4 apples and 18 bananas
Метод №8: Использование метода str.format.
Один из дополнительных подходов к преобразованию списка в строку в Python заключается в использовании метода str.format. Этот метод позволяет задать шаблон строки, а затем заполнить значения заполнителей элементами списка.
Пример:
lst = ['Geeks', 'for', 'Geeks'] result = "{} {} {}".format(*lst) print(result)
Вывод:
Geeks for Geeks
Преимущество этого подхода заключается в том, что можно точно указать, как должны быть отформатированы элементы списка, задав формат в шаблоне строки. Например, можно указать количество десятичных знаков для чисел с плавающей запятой или ширину и выравнивание выходной строки.
lst = [1.2345, 'good' , 3.4567] # :.2f - формат итогового представления данных result = "{:.2f} {} {:.2f}".format(*lst) print(result)
Вывод:
1.23 good 3.46
Метод №9: Использование рекурсии.
def list_string(start, l, word): # базовый случай if start == len(l): return word # добавляем элемент в итоговую строку и пробел в качестве разделителя word += str(l[start]) + ' ' # продолжаем рекурсию до базового случая return list_string(start+1, l, word) l=['Geeks','for','Geeks'] print(list_string(0,l,''))
1.23 good 3.46
Сложность вышеупомянутых методов.
Временная сложность вышеуказанных подходов будет зависеть от длины списка. Например, в методе 1 мы итерируем список и добавляем каждый элемент в строку, поэтому временная сложность будет O(n), где n – длина списка.
Аналогично, временная сложность других методов также будет равна O(n).
Пространственная сложность всех вышеперечисленных методов также будет O(n), поскольку мы создаем новую строку размера n для хранения элементов списка.
Следовательно выбирать стоит то, что проще будет понять когда вы, либо кто-то другой откроет ваш код. Либо нужны специфические вещи типа форматирования или преобразования в строку интернируемого объекта, тогда вам стоит рассмотреть 8 и 5 методы.
Перевод статьи «Python program to convert a list to string».