2010-11-12 72 views
2

数据:如何最佳地将字符列表连接到字符串?

list = ['a','b','x','d','s'] 

我想创建一个字符串str = “abxds”。我怎样才能做到这一点?

现在我做这样的事情:

str = "" 
for i in list: 
    str = str + i 
print(str) 

我知道字符串在Python不可改变的,这将创造7字符串对象。当我做几千次时,这会消失。

有没有更有效的方法来做到这一点?

+2

您应该避免使用“列表”作为列表的名称是一个内置的(和“str”相同) – Noah 2010-11-12 16:17:45

+1

'str'对象在Python中是_immutable_,这就是为什么它为每个连接操作创建一个新的'str'对象。 – 2010-11-12 16:19:56

+0

对不起,错字,字符串是不可变的 – rda3mon 2010-11-12 16:27:21

回答

10
>>> theListOfChars = ['a', 'b', 'x', 'd', 's'] 
>>> ''.join(theListOfChars) 
'abxds' 

BTW,不要使用liststr变量名因为它们的内置函数的名称了。

(此外,还有在Python中没有char。A“字符”只是一个长度为1的字符串,所以''.join方法适用于串的名单。)

+0

是最有效的方法吗? – rda3mon 2010-11-12 16:32:17

+0

速度差异: 无连接:1.01871395111 连接:0.609759092331 – rda3mon 2010-11-12 16:34:41

+0

@Ringo:对于纯Python代码,是的。 – kennytm 2010-11-12 16:35:46

2

你正在寻找的东西是str.join()

>>> L = ['a','b','x','d','s'] 
>>> ''.join(L) 
'abxds' 

(不要将其命名您的变量list,它是一个内置的名字)

3

KennyTM的答案是伟大的。另外,如果你想使他们逗号分隔或东西,它会是:

",".join(characterlist) 

这会导致“A,B,X,d,S”