在 Scala 中将两个数组与索引压缩在一起?

Zipping two arrays together with index in Scala?

我有两个用整数填充的数组。它们大小相同(val array1val 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))

元组没有扁平化,但是当你知道结构时你可以很容易地做到这一点,就像这里一样。