我有两个列表,我想把列表A中的每个元素与列表B中的元素相加,生成一个新的列表。
我可以这样做:
List(1,2).zip(List(5,5)).map(t => t._1 + t._2)
在Scala中有没有更简单、更整洁的方法来实现这一点呢?
在Clojure中,我可以这样做:
(map + [1 2 3] [4 5 6])
发布于 2011-12-22 16:23:46
对于两个列表:
(List(1,2), List(5,5)).zipped.map(_ + _)
对于三个列表:
(List(1,2), List(5,5), List(9, 4)).zipped.map(_ + _ + _)
对于n个列表:
List(List(1, 2), List(5, 5), List(9, 4), List(6, 3)).transpose.map(_.sum)
发布于 2011-12-22 16:29:24
missingfaktor的答案也是我推荐的。
但您甚至可以改进您的代码片段,以摆脱使用笨拙的_1 _2:
List(1,2) zip List(5,5) map { case (a, b) => a + b }
发布于 2011-12-22 16:40:27
另一种简化方法:
import Function.tupled
List(1,2).zip(List(5,5)) map tupled {_ + _}
https://stackoverflow.com/questions/8601041
复制相似问题