我有一份清单清单。我需要重新排序的元素,以便新的列表列表是所有第一个元素的列表,然后是所有第二个元素的列表,等等。 它应该是这样的:
Input
[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]
Output
[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]]
任何人都可以帮我吗?
答案 0 :(得分:7)
您似乎想要transpose
,您需要导入Data.List
。
transpose
将获取包含它们的列表的第一个元素,并按正确的顺序将它们放在第一个列表中,然后将列表中的第二个元素放入第二个列表中,然后将它们放入第二个列表中。正确的顺序,等等。
例如,
> transpose [[1,2,3],[4,5],[6]]
[[1,4,6],[2,5],[3]]
> transpose [[1],[2,3],[4,5,6]]
[[1,2,4],[3,5],[6]]
答案 1 :(得分:4)
一般来说遇到这样的问题:
在此处[[a]] -> [[a]]
搜索Hoogle http://www.haskell.org/hoogle/
猜猜你的案子的第一个结果? transpose
当然。
注意:你应该接受来自user3217013的回答 - 我写了这个,因为我还不能编辑