当前位置:  开发笔记 > 编程语言 > 正文

使用其他列表中的元素作为参数,对一个列表中的每个元素应用函数?

如何解决《使用其他列表中的元素作为参数,对一个列表中的每个元素应用函数?》经验,为你挑选了1个好方法。

我不知道怎么称呼这个,但我想要这样的东西.

val x = List(1,2,3,...)
val y = List(4,5,6,...)
//want a result of List(1+4, 5+6, 7+8,...)

在scala中有一个简单的方法吗?我当前的实现涉及使用从0到x.lenght的循环,这非常难看.如果有可能,我希望解决方案可以使用超过第n个列表,也可能与+旁边的其他类型的运算符一起使用.

谢谢 !



1> Luigi a.k.a...:

回应"如果我有超过3个列表怎么办?":

def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) = 
  xss reduceLeft ((_,_).zipped map f)

使用这样:

scala> combineAll(List(1,2,3), List(2,2,2), List(4,5,6), List(10,10,10))(_+_)
res5: Seq[Int] = List(17, 19, 21)

编辑:或者

def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) = 
  xss.transpose map (_ reduceLeft f)

做同样的事情,可能更有效率.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有