Есть ли более простой способ объединить строковые элементы в списке в одну строку? Могу ли я использовать 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
'-'.join(sentence)
Ответы:
Используйте
join
:источник
sentence.join(" ")
работать, так как обратная операция естьlist.split(" ")
. Любая идея, если это будет добавлено в методы Python для списков?list.join
было бы неуместно для произвольного списка. С другой стороны, аргументомstr.join
может быть любая «итеративная» последовательность строк, а не просто список. Единственное, что имело бы смысл - это встроенная функцияjoin(list, sep)
; есть один в (в основном устаревший)string
модуль, если вы действительно этого хотите.' '.join(['this', 'is', 'a', 'sentence'])
Более общий способ преобразования списков Python в строки:
источник
map(str, my_lst)
было бы достаточно без перечисления списка =)int
но это может быть любой тип, который может быть представлен в виде строки.' '.join(map(lambda x: ' $'+ str(x), my_lst))
, вернется'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
Для начинающих очень полезно знать, почему соединение является строковым методом .
Это очень странно в начале, но очень полезно после этого.
Результатом объединения всегда является строка, но объединяемый объект может быть разных типов (генераторы, списки, кортежи и т. Д.).
.join
быстрее, потому что он выделяет память только один раз. Лучше, чем классическая конкатенация (см. Расширенное объяснение ).Как только вы изучите это, это будет очень удобно, и вы можете делать такие трюки, чтобы добавить скобки.
источник
Хотя ответ @Burhan Khalid хорош, я думаю, что это более понятно:
Второй аргумент для join () является необязательным и по умолчанию "".
РЕДАКТИРОВАТЬ: эта функция была удалена в Python 3
источник
Мы можем указать, как мы должны присоединиться к строке. Вместо «-» мы можем использовать «»
источник
Мы также можем использовать функцию уменьшения Python :
источник
join
?источник