2016-05-23 116 views
0

我是一个python新手。在python中,试图将列表中的元素组合到一个新的组合元素列表中

我有一个列表的列表:

test=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] 

我想,这样我得到的结果每个列表的元素结合起来:

result = [[1,4,7,10],[2,5,8,11],[3,6,9,12]] 

我要寻找一个解决方案,为n个元素工作,答案是列表清单(元组列表不适用于我)。理想情况下,我想测试有n个元素,而不是一个确定的数字。

我希望下面将工作:

result = map(zip,test) 

但事实并非如此。

有没有一个简单的方法来做到这一点?

+0

它看起来好像你想用列表做矢量函数吗?映射和压缩的范围受限于简单的列表函数。如果你想要更复杂的功能考虑使用集合。 – SkyLeach

+0

@普兰,我不这么认为。那是指一个元组列表作为答案。我特意寻找列表作为答案。 –

+0

区别在于简单的类型转换操作。我觉得这个问题的重要部分是** zip(* test)**见解。我选择了上述问题作为最容易说明这种见解的问题。 – Prune

回答

2
result = map(list, zip(*test)) 
+0

谢谢。这给了我列表的元素。 –

3

您并不寻找map()

您正在寻找zip()与拆包,此功能不正是你想要什么:

result = zip(*test) 
# [(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)] 

如果你真的需要一个列表的列表,在那里,你可以使用map()

result = map(list, zip(*test)) 
# [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]] 

注如果您使用的是Python 3,zip()map()不再返回list,那么您可能需要用list()转换来包装整个表达式。

+0

谢谢!我忘记了星号。 :-) –

相关问题