Вопрос-Ответ

How to concatenate (join) items in a list to a single string

Как объединить элементы списка в одну строку

Как мне объединить список строк в одну строку?

Например, учитывая ['this', 'is', 'a', 'sentence'], как мне получить "this-is-a-sentence"?


Для обработки нескольких строк в отдельных переменных см. Как добавить одну строку к другой в Python?.

Для противоположного процесса - создания списка из строки - см. Как мне разделить строку на список символов? или как мне разделить строку на список слов? при необходимости.

Переведено автоматически
Ответ 1

Использование str.join:

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
Ответ 2

Более общим способом (охватывающим также списки чисел) преобразования списка в строку было бы:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)
12345678910
Ответ 3

Новичкам очень полезно знать, почему join - это строковый метод.

Это очень странно в начале, но очень полезно после этого.

Результатом объединения всегда является строка, но объединяемый объект может быть многих типов (генераторы, списки, кортежи и т.д.).

.join быстрее, потому что память выделяется только один раз. Лучше, чем классическая конкатенация (см. Расширенное объяснение).

Как только вы его освоите, он станет очень удобным, и вы сможете выполнять подобные трюки для добавления круглых скобок.

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'
Ответ 4

Edit from the future: Please don't use the answer below. This function was removed in Python 3 and Python 2 is dead. Even if you are still using Python 2 you should write Python 3 ready code to make the inevitable upgrade easier.


Although @Burhan Khalid's answer is good, I think it's more understandable like this:

from str import join

sentence = ['this','is','a','sentence']

join(sentence, "-")

The second argument to join() is optional and defaults to " ".

python string list