python:将列表中的项连接到字符串

有没有一种更简单的方法将列表中的字符串项连接到单个字符串中?

我可以使用str.join()函数来连接列表中的项目吗?

例如,这是输入['this','is','a','sentence'],这是期望的输出this-is-a-sentence

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

使用join:

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


将python列表转换为字符串的一种更通用的方法是:

1
2
3
4
>>> 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'


这对初学者来说非常有用为什么join是一个string方法

开始的时候很奇怪,但之后就很有用了。

join的结果总是一个字符串,但是要连接的对象可以是多种类型(生成器、列表、元组等)

.join更快,因为它只分配一次内存。比经典级联更好。扩展的解释

一旦你学会了它,你会觉得很舒服,你可以像这样做来添加括号。

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

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

虽然@Burhan Khalid的回答很好,但我觉得这样更容易理解:

1
2
3
4
5
from str import join

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

join(sentence,"-")

join()的第二个参数是可选的,默认值为""。

编辑:这个函数在python3中被删除了


我们还可以使用python内置的reduce:-功能

from functools import reduce

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

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

print(out_str)

我希望这能有所帮助:)