【发布时间】:2016-01-07 04:32:21
【问题描述】:
我想知道是否有一种巧妙的方法可以用 Scala 中的前一个非零值替换数组中的所有零。类似这个问题:pandas replace zeros with previous non zero value
对于滑动没有连续零的情况,我可以做到这一点:
scala> Array(1,2,3,0,5,6,7).sliding(2).map {case Array(v1, v2) => if (v2==0) v1 else v2}.toArray
res293: Array[Int] = Array(2, 3, 3, 5, 6, 7)
虽然我必须附加第一个值(在转换为数组之前我会这样做)。
如果有两个连续的零,上面的代码就不起作用:
scala> Array(1,2,3,0,0,6,7).sliding(2).map {case Array(v1, v2) => if (v2==0) v1 else v2}.toArray
res294: Array[Int] = Array(2, 3, 3, 0, 6, 7)
想要的结果是Array(2,3,3,3,6,7)。
使用 for 循环很容易做到这一点;是否可以使用函数式方法?
【问题讨论】:
标签: scala functional-programming