在 Scala 中将两个数组与索引压缩在一起?
Zipping two arrays together with index in Scala?
我有两个用整数填充的数组。它们大小相同(val array1
和 val array2
)。
我想将它们融合成元组,并将它们的索引作为第三个元素。例如,如果我们有 val array1 = Array(5,2,6,2)
和 val array2 = Array(9,8,3,4)
那么我想得到 (5,9,0),(2,8,1),(6,3,2),(2,4,3)
.
我试过 array1.zip(array2).zipWithIndex
但它给出了 [(Int,Int),Int]
而我想要 (Int,Int,Int)
或类似的东西。
只需执行:
array1.zip(array2).zipWithIndex.map { case ((a, b), i) => (a, b, i) }
有了 array1.zip(array2).zipWithIndex
你就快到了。
这是你想要的吗?
(array1.zip(array2).zipWithIndex).map {
case ((i, j), z) => (i, j, z)
}
res5: Array[(Int, Int, Int)] = Array((5,9,0), (2,8,1), (6,3,2), (2,4,3))
元组没有扁平化,但是当你知道结构时你可以很容易地做到这一点,就像这里一样。
我有两个用整数填充的数组。它们大小相同(val array1
和 val array2
)。
我想将它们融合成元组,并将它们的索引作为第三个元素。例如,如果我们有 val array1 = Array(5,2,6,2)
和 val array2 = Array(9,8,3,4)
那么我想得到 (5,9,0),(2,8,1),(6,3,2),(2,4,3)
.
我试过 array1.zip(array2).zipWithIndex
但它给出了 [(Int,Int),Int]
而我想要 (Int,Int,Int)
或类似的东西。
只需执行:
array1.zip(array2).zipWithIndex.map { case ((a, b), i) => (a, b, i) }
有了 array1.zip(array2).zipWithIndex
你就快到了。
这是你想要的吗?
(array1.zip(array2).zipWithIndex).map {
case ((i, j), z) => (i, j, z)
}
res5: Array[(Int, Int, Int)] = Array((5,9,0), (2,8,1), (6,3,2), (2,4,3))
元组没有扁平化,但是当你知道结构时你可以很容易地做到这一点,就像这里一样。