0

我有一个清单

我想做的是

def someRandomMethod(...): ... = {
  val list = List(1, 2, 3, 4, 5)
  if(list.isEmpty) return list
  list.differentScanLeft(list.head)((a, b) => {
     a * b
  })
}

它返回 List(1, 2, 6, 12, 20) 而不是 List(1, 2, 6, 24, 120)

有这样的API吗?

谢谢你,科斯米尔

4

2 回答 2

0

您可能想使用zip

val list = List(1,2,3,4,5,6)
val result = list.zip(list.drop(1)).map{case (a,b) => a*b}
println(result)

> List(2, 6, 12, 20, 30)
于 2018-09-19T09:56:17.947 回答
0

scan这不是真正正确的方法,您想使用它sliding来生成相邻值对的列表:

(1::list).sliding(2).map(l => l(0)*l(1))

更一般地说,有时需要在使用时将数据传递到下一次迭代scan。对此的标准解决方案是使用一个元组(state, ans),然后map在最后用另一个过滤掉状态。

于 2018-09-19T09:56:31.160 回答