我们举一个例子,我有一个矩阵:Array [Array [Int]],m * n,我想压缩m个列表(行)。
输入m * n矩阵:
val list = List( //m Lists
List(1,2,3,...,n), //n Int in each List
List(11,12,13,...,n),
...,
...,
...,
List(91,92,93,...,n)
)
输出应该是:
List( // n Lists
List(1,11,...,91), //m Int in each List
List(2,12,...,92),
List(3,13,...,93),
...,
...,
...,
List(n,n,...,n)
)
在python中,我可以简单地执行
map(list, zip(*matrix))
我已经看过一些解决方案,但是,它们只适用于某些计数的压缩列表。 Scala中是否有一个简洁的解决方案,就像Python一样?
更新: 感谢回答,我发现Scala中的关键字是转置,请检查类似的问题:How to perform transpose on List of Lists in scala?
答案 0 :(得分:0)
如果所有子数组具有相同数量的元素,则可以使用Array.transpose
方法:
val arr = Array(Array(1,2,3), Array(4,5,6))
// arr: Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
arr.transpose
// res8: Array[Array[Int]] = Array(Array(1, 4), Array(2, 5), Array(3, 6))