Scala,将多个列表转换为元组列表

Sri*_*vas 5 scala

我有3个列表

val a = List("a", "b", "c")
val b = List(1, 2, 3)
val c = List(4, 5, 6)
Run Code Online (Sandbox Code Playgroud)

我想将它们转换如下

List(("a", 1, 4), ("b", 2, 5), ("c", 3, 6))
Run Code Online (Sandbox Code Playgroud)

请告诉我如何获得此结果

Kei*_*son 13

如果您有两个或三个需要压缩的列表,可以使用压缩

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

(a,b,c).zipped.toList
Run Code Online (Sandbox Code Playgroud)

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


fla*_*ian 11

应该很容易实现:

(a zip b) zip c map {
    case ((x, y), z) => (x, y, z)
};
Run Code Online (Sandbox Code Playgroud)

  • 或`(a,b,c).zipped.toList` (6认同)

gzm*_*zm0 6

使用:

(a zip b) zip c map { case ((av,bv),cv) => (av,bv,cv) }
Run Code Online (Sandbox Code Playgroud)

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