如果我有一个字符列表:
a = ['a','b','c','d']
如何将其转换为单个字符串?
a = 'abcd'
如果我有一个字符列表:
a = ['a','b','c','d']
如何将其转换为单个字符串?
a = 'abcd'
当前回答
你也可以像这样使用operator.concat():
>>> from operator import concat
>>> a = ['a', 'b', 'c', 'd']
>>> reduce(concat, a)
'abcd'
如果你使用的是python3,你需要前置:
>>> from functools import reduce
因为内置的reduce()已经从Python 3中移除,现在存在于functools.reduce()中。
其他回答
使用空字符串的join方法将所有字符串和中间的空字符串连接在一起,如下所示:
>>> a = ['a', 'b', 'c', 'd']
>>> ''.join(a)
'abcd'
如果列表中包含数字,则可以使用map()和join()。
Eg:
>>> arr = [3, 30, 34, 5, 9]
>>> ''.join(map(str, arr))
3303459
这在很多流行的语言中都适用,比如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或其他流行的脚本语言那样是列表对象中的一个方法?这是Python社区如何思考的一个例子。由于join返回的是一个字符串,所以它应该放在string类中,而不是list类中,因此str.join(list)方法意味着:使用str作为分隔符将列表连接到一个新的字符串中(在这种情况下str是一个空字符串)。
不知怎的,一段时间后,我开始喜欢上了这种思维方式。我可以抱怨Python设计中的很多东西,但不能抱怨它的连贯性。
h = ['a','b','c','d','e','f']
g = ''
for f in h:
g = g + f
>>> g
'abcdef'
你也可以像这样使用operator.concat():
>>> from operator import concat
>>> a = ['a', 'b', 'c', 'd']
>>> reduce(concat, a)
'abcd'
如果你使用的是python3,你需要前置:
>>> from functools import reduce
因为内置的reduce()已经从Python 3中移除,现在存在于functools.reduce()中。