7

我有 3 个列表,例如

val a = List("a", "b", "c")
val b = List(1, 2, 3)
val c = List(4, 5, 6)

我想将它们转换如下

List(("a", 1, 4), ("b", 2, 5), ("c", 3, 6))

请让我知道如何获得此结果

4

3 回答 3

14

如果您需要将两个或三个列表压缩在一起,则可以使用zipped

val a = List("a", "b", "c")
val b = List(1, 2, 3)
val c = List(4, 5, 6) 

(a,b,c).zipped.toList

这导致:List((a,1,4), (b,2,5), (c,3,6))

于 2013-05-17T21:18:07.670 回答
12

应该很容易实现:

(a zip b) zip c map {
    case ((x, y), z) => (x, y, z)
};
于 2013-05-17T17:24:52.370 回答
6

利用:

(a zip b) zip c map { case ((av,bv),cv) => (av,bv,cv) }

注意:这会缩短 中最短的结果列表a,b,c。如果您希望使用默认值填充结果列表,请使用zipAll.

于 2013-05-17T17:23:54.303 回答