Подтвердить что ты не робот

Объединение элемента в список строк

Есть ли более простой способ объединить строковые элементы в списке в одну строку? Могу ли я использовать функцию str.join()?

Например. это вход ['this','is','a','sentence'] и это желаемый выход this-is-a-sentence

sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
    sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
4b9b3361

Ответ 1

Используйте join:

>>> sentence = ['this','is','a','sentence']
>>> '-'.join(sentence)
'this-is-a-sentence'

Ответ 2

Более общий способ преобразования списков python в строки:

>>> 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(("(",")"))
  '(1,2,3,4,5)'

  >>> lista=["(",")"]
  >>> ",".join("12345").join(lista)
  '(1,2,3,4,5)'

Ответ 4

Хотя ответ @Burhan Khalid хороший, я думаю, что это более понятно:

from str import join

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

join(sentence, "-") 

Второй аргумент для join() является необязательным и по умолчанию используется значение "".

EDIT: эта функция была удалена в Python 3

Ответ 5

Мы также можем использовать встроенную функциональность Python в Reduce: -

от импорта functools уменьшите

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

out_str=str(reduce(lambda x,y:x+"-"+y,sentence))

print(out_str)

Надеюсь, это поможет :)

Ответ 6

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)