Python 名单的处理

Python 名单的处理,python,list,Python,List,我正在做一系列的工作 输入: x = [['a','a','a'],['b','b','b'],['c','c','c'],['d','d','d']] 我正在寻找一个输出: s = ['a_b_c_d','a_b_c_d','a_b_c_d'] 请让我知道如何使用列表理解来完成此操作 In [6]: x = [['a','a','a'],['b','b','b'],['c','c','c'],['d','d','d']] In [7]: ['_'.join(s) for s in zip

我正在做一系列的工作

输入:

x = [['a','a','a'],['b','b','b'],['c','c','c'],['d','d','d']]
我正在寻找一个输出:

s = ['a_b_c_d','a_b_c_d','a_b_c_d']
请让我知道如何使用列表理解来完成此操作

In [6]: x = [['a','a','a'],['b','b','b'],['c','c','c'],['d','d','d']]

In [7]: ['_'.join(s) for s in zip(*x)]
Out[7]: ['a_b_c_d', 'a_b_c_d', 'a_b_c_d']
根据要求,这将使用列表理解。请参阅@eumiro的答案,了解我认为同样好的基于
map()
的解决方案

>>> x = [['a','a','a'],['b','b','b'],['c','c','c'],['d','d','d']]
>>> map('_'.join, zip(*x))
['a_b_c_d', 'a_b_c_d', 'a_b_c_d']

…虽然@aix的列表理解更容易理解。

我假设第四个
'a_b_c_d'
是一个打字错误?
['''.join(l[0]表示x中的l)]*len(x)
但是,为什么?@Marcin将此作为一个解决方案提交,我们仍然不确定OP想要什么。我删除了第四个
'a_b_c_d'
,因为OP接受了一个有3个答案的答案。但它并没有产生OP想要的结果。。。您的结果包含3个元素而不是4个。@FelixKling:我认为这是一个输入错误。请参阅我对问题的评论。我认为这是
map
的一个非常好的用例。它也应该比列表理解更快,因为方法调用被推到C端。但需要注意的是,在Python3中,它返回的是一个iterable,而不是列表。