给出以下Scala列表:
val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
我怎样才能得到:
List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3"))
由于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)
有什么建议吗?我想我缺少一种非常简单的方法。
更新:我正在寻找一种解决方案,可以采用N个列表(每个列表包含M个元素)并创建M个TupleN的列表。
更新2:事实证明,对于我的特定用例,最好有一个列表列表,而不是一个元组列表,所以我接受南瓜的回答。它也是最简单的,因为它使用本机方法。