我有一个列表,看起来像这样:
a = [('A', 'V', 'C'), ('A', 'D', 'D')]
我想创建另一个列表,将a
转换为:
['AVC', 'ADD']
我该如何继续进行?
在列表推导式中使用 str.join()
(在Python 2.x和3.x中都适用):
>>> a = [('A', 'V', 'C'), ('A', 'D', 'D')]
>>> [''.join(x) for x in a]
['AVC', 'ADD']
str.join
映射到a
中的每个tuple
:>>> map(''.join, a)
['AVC', 'ADD']
在Python 3中,map
是一个可迭代对象,因此您需要将其实例化为list
:
>>> list(map(''.join, a))
['AVC', 'ADD']
reduce
是另一种选择:>>> a = [('A','V','C'), ('A','D','D')]
在Python 2中:
>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']
>>> from functools import reduce
>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']
from functools import reduce
。 - Eugene Yarmashoperator.concat
替换你的 lambda。 - njzk2lambda
替换为operator.itemgetter
以处理sorted
的key
参数),并且为每个字符分配一个新的Python str
对象。join
接受字符串列表,为结果分配一个单一字符串对象,并使用其输入填充它。(也就是说,所有操作都在C级别完成,而不是在Python级别完成)。 - chepner