List 如何在scala中对列表列表中的每个值求和/组合

List 如何在scala中对列表列表中的每个值求和/组合,list,scala,collections,List,Scala,Collections,给定以下Scala列表: val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3")) 我如何获得: List("a1a2a3","b1b2b3","c1c2c3") 是否可以在包含两个以上列表的列表上使用Zippped.map(+x)?或者有其他方法解决这个问题吗?您可以使用。transpose方法: scala> val l = List(List("a1", "b1", "

给定以下Scala列表:

val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
我如何获得:

List("a1a2a3","b1b2b3","c1c2c3")

是否可以在包含两个以上列表的列表上使用Zippped.map(+x)?或者有其他方法解决这个问题吗?

您可以使用
。transpose
方法:

scala> val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
l: List[List[String]] = List(List(a1, b1, c1), List(a2, b2, c2), List(a3, b3, c3))

scala> l.transpose
res0: List[List[String]] = List(List(a1, a2, a3), List(b1, b2, b3), List(c1, c2, c3))
然后映射到外部列表,使用
mkString
创建每个
String

scala> l.transpose.map(_.mkString)
res1: List[String] = List(a1a2a3, b1b2b3, c1c2c3)
其他解决方案

scala> val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
scala> l.reduce[List[String]]{ case (acc, current) => acc zip current map { case (a, b) => a + b } }

res2: List[String] = List(a1a2a3, b1b2b3, c1c2c3)

如果列表超过3个怎么办?@MateuszDymczyk change foldLeft->reduce