Если у меня есть список символов:
a = ['a','b','c','d']
Как преобразовать его в одну строку?
a = 'abcd'
Если у меня есть список символов:
a = ['a','b','c','d']
Как преобразовать его в одну строку?
a = 'abcd'
Используйте метод join пустой строки, чтобы соединить все строки вместе с пустой строкой между ними, например:
>>> a = ['a', 'b', 'c', 'd']
>>> ''.join(a)
'abcd'
Это работает во многих популярных языках, таких как JavaScript и Ruby, почему не в Python?
>>> ['a', 'b', 'c'].join('')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'join'
Как ни странно, в Python метод join находится в классе str:
# this is the Python way
"".join(['a','b','c','d'])
Почему join не является методом в объекте list, как в JavaScript или других популярных языках сценариев? Это один из примеров того, как думает сообщество Python. Поскольку join возвращает строку, ее следует поместить в класс string, а не в класс list, поэтому метод str.join(list) означает: объединить список в новую строку, используя str в качестве разделителя (в данном случае str - пустая строка).
Как-то я полюбил этот образ мышления через некоторое время. Я могу жаловаться на многое в дизайне Python, но не на его согласованность.
Если ваш интерпретатор Python является старым (например, например, 1.5.2, который распространен в некоторых старых дистрибутивах Linux), у вас может не быть join() доступным как метод для любого старого строкового объекта, и вам придется используйте строковый модуль. Пример:
a = ['a', 'b', 'c', 'd']
try:
    b = ''.join(a)
except AttributeError:
    import string
    b = string.join(a, '')
Строка b будет 'abcd'.
Это может быть самый быстрый способ:
>> from array import array
>> a = ['a','b','c','d']
>> array('B', map(ord,a)).tostring()
'abcd'
Функция уменьшения также работает
import operator
h=['a','b','c','d']
reduce(operator.add, h)
'abcd'
h = ['a','b','c','d','e','f']
g = ''
for f in h:
    g = g + f
>>> g
'abcdef'
используйте join с пустым разделителем
h = ['a','b','c','d','e','f']
print ''.join(h)
или используйте reduce с оператором add
import operator
h=['a','b','c','d']
reduce(operator.add, h)
Если список содержит числа, вы можете использовать map() с join().
Например:
    arr = [3, 30, 34, 5, 9]
    ''.join(map(str,arr))
>> 3303459
 кроме str.join который является наиболее естественным способом, существует возможность использовать io.StringIO и злоупотреблять writelines для записи всех элементов за один раз:
import io
a = ['a','b','c','d']
out = io.StringIO()
out.writelines(a)
print(out.getvalue())
печатает:
abcd
 При использовании этого подхода с функцией генератора или итерабельностью, которая не является tuple или list, она сохраняет временное создание списка, которое делает join, чтобы выделить правильный размер за один раз (и список из 1-символьных строк очень дорог память-накрест).
Если у вас низкая память, и у вас есть лениво оцениваемый объект в качестве входных данных, этот подход является лучшим решением.
Вы также можете использовать operator.concat() следующим образом:
>>> from operator import concat
>>> a = ['a', 'b', 'c', 'd']
>>> reduce(concat, a)
'abcd'
Если вы используете Python 3, вам необходимо добавить:
>>> from functools import reduce
 поскольку встроенный reduce() был удален из Python 3 и теперь живет в functools.reduce().
g = ['a', 'b', 'c', 'd']
f=''
for i in range(0,len(g)):
    f=f+g[i]
print f
    str = ''
    for letter in a:
        str += letter
    print str