gpt4 book ai didi

scala - 用 Scala 将数组中的所有零替换为先前的非零值

转载 作者:行者123 更新时间:2023-12-02 06:31:36 24 4
gpt4 key购买 nike

我想知道在 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 循环很容易做到这一点;是否可以使用函数式方法?

最佳答案

使用左扫描:

Array(1,2,3,0,5,6,7).scanLeft(0)({(left, right) => if (right == 0) then left else right}).tail

关于scala - 用 Scala 将数组中的所有零替换为先前的非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34641352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com