假设我有List(1,2,3,4,5),我想获得List(3,5,7,9),即元素和前一个的总和(1 + 2,2 +) 3,3 + 4,4 + 5)
我尝试通过制作两个列表来做到这一点:
val list1 = List(1,2,3,4)
val list2 = (list1.tail ::: List(0)) // 2,3,4,5,0
for (n0_ <- list1; n1th_ <- list2) yield (n0_ + n1_)
Run Code Online (Sandbox Code Playgroud)
但是它将所有元素彼此组合在一起,就像交叉产品一样,我只想成对地组合元素.我是函数式编程的新手,我以为我会使用map()但似乎无法这样做.
Inf*_*ity 12
List(1, 2, 3, 4, 5).sliding(2).map(_.sum).to[List] 做的工作.
文档:
def sliding(size: Int): Iterator[Seq[A]]
Run Code Online (Sandbox Code Playgroud)
通过在它们上面传递"滑动窗口"来对固定大小块中的元素进行分组(而不是像对分组那样对它们进行分区).
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |