将字符列表转换为string

如果我有一个字符列表:

a = ['a','b','c','d'] 

如何将其转换为单个string?

 a = 'abcd' 

使用空string的join方法将所有string与中间的空string连接在一起,如下所示:

 >>> a = ['a', 'b', 'c', 'd'] >>> ''.join(a) 'abcd' 

这适用于JavaScript或Ruby,为什么不在Python?

 >>> ['a', 'b', 'c'].join('') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute 'join' 

但在Python中, join方法在str类上:

 # this is the Python way "".join(['a','b','c','d']) 

这有点奇怪,不是吗? 为什么join不像JavaScript或其他stream行的脚本语言那样是list对象中的一种方法? 这是Python社区如何思考的一个例子。 由于join返回一个string,它应该放在string类中,而不是放在列表类中,所以str.join(list)方法意味着:使用str作为分隔符将列表连接到一个新的string中(在这种情况下, str是一个空string)。

不知何故,过了一段时间,我才喜欢这种思维方式。 我可以在Pythondevise中抱怨很多东西,但不是关于它的一致性。

这可能是最快的方法:

 >> from array import array >> a = ['a','b','c','d'] >> array('B', map(ord,a)).tostring() 'abcd' 

如果你的Python解释器是旧的(例如1.5.2,在一些老版本的Linux发行版中是常见的),你可能没有在任何旧的string对象上使用join()方法,而是需要使用string模块。 例:

 a = ['a', 'b', 'c', 'd'] try: b = ''.join(a) except AttributeError: import string b = string.join(a, '') 

stringb将是'abcd'

 h = ['a','b','c','d','e','f'] g = '' for f in h: g = g + f >>> g 'abcdef' 

减lessfunction也起作用

 import operator h=['a','b','c','d'] reduce(operator.add, h) 'abcd' 

使用空分隔符连接

 h = ['a','b','c','d','e','f'] print ''.join(h) 

或者使用add运算符来reduce

 import operator h=['a','b','c','d'] reduce(operator.add, h) 

你也可以像这样使用operator.concat()

 >>> from operator import concat >>> a = ['a', 'b', 'c', 'd'] >>> reduce(concat, a) 'abcd' 

如果您使用Python 3,则需要预先安装:

 >>> from functools import reduce 

因为内build的reduce()已经从Python 3中删除,现在生活在functools.reduce()

 g = ['a', 'b', 'c', 'd'] f='' for i in range(0,len(g)): f=f+g[i] print f 

如果列表包含数字,则可以使用map()join()

例如:

  arr = [3, 30, 34, 5, 9] ''.join(map(str,arr)) >> 3303459 
  str = '' for letter in a: str += letter print str