给出以下Scala列表:
val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到:
List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3"))
Run Code Online (Sandbox Code Playgroud)
由于zip只能用于组合两个列表,我认为你需要以某种方式迭代/减少主列表.毫不奇怪,以下不起作用:
scala> l reduceLeft ((a, b) => a zip b)
<console>:6: error: type mismatch;
found : List[(String, String)]
required: List[String]
l reduceLeft ((a, b) => a zip b)
Run Code Online (Sandbox Code Playgroud)
有任何建议,如何做到这一点?我想我错过了一个非常简单的方法.
更新:我正在寻找一个解决方案,可以采用N个列表列表,每个列表包含M个元素,并创建M个元组列表.
更新2:事实证明,对于我的特定用例来说,最好有一个列表列表,而不是元组列表,所以我接受南瓜的回应.它也是最简单的,因为它使用本机方法.