scala 中是否有一些扩展版本的解压缩适用于任何 List[n-tuple] 而不是像 Unzip 那样只适用于 List[pairs]?

Abh*_*mar 5 functional-programming scala

如果我有一个三元组列表,我想要三个单独的列表。有没有比这更好的方法:

(listA, listB, listC) = (list.map(_._1), list.map(_._2). list.map(_._3))
Run Code Online (Sandbox Code Playgroud)

哪个可以用于任何 n 元组?

编辑: 虽然我在写这个问题时不知道存在三个 unzip3,但有没有办法编写一个函数来获取一般的 n 个列表?

Cho*_*ang 0

这个怎么样?

scala> val array = Array((1, 2, 3), (4, 5, 6), (7, 8, 9))
array: Array[(Int, Int, Int)] = Array((1,2,3), (4,5,6), (7,8,9))

scala> val tripleArray = array.unzip3
tripleArray: (Array[Int], Array[Int], Array[Int]) = (Array(1, 4, 7),Array(2, 5,8),Array(3, 6, 9))
Run Code Online (Sandbox Code Playgroud)