Cписок в строку на Python

Напишем программу на языке 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».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *