在Scala中总结两个列表的最简单方法?

Phi*_*hil 19 scala clojure

我有两个列表,我想将列表A中的每个元素与列表B中的元素相加,生成一个新列表.

我可以这样做:

List(1,2).zip(List(5,5)).map(t => t._1 + t._2)
Run Code Online (Sandbox Code Playgroud)

在Scala中有没有更简单或更简洁的方法呢?

在Clojure中,我可以这样做:

(map + [1 2 3] [4 5 6])
Run Code Online (Sandbox Code Playgroud)

mis*_*tor 42

对于两个列表:

(List(1,2), List(5,5)).zipped.map(_ + _)
Run Code Online (Sandbox Code Playgroud)

三个列表:

(List(1,2), List(5,5), List(9, 4)).zipped.map(_ + _ + _)
Run Code Online (Sandbox Code Playgroud)

对于n个列表:

List(List(1, 2), List(5, 5), List(9, 4), List(6, 3)).transpose.map(_.sum)
Run Code Online (Sandbox Code Playgroud)


Hei*_*ger 9

missingfaktor的答案也是我所建议的.

但你甚至可以改进你的代码片段摆脱使用笨拙的_1,_2:

List(1,2) zip List(5,5) map { case (a, b) => a + b }
Run Code Online (Sandbox Code Playgroud)