如何在Scala中用另一个Seq中的值替换一个Seq中的值?

我有序列:

val A = Seq(1,3,0,4,2,0,7,0,6)
val B = Seq(8,9,10)

我需要一个新序列,其中第二个序列的值替换了0:

Seq(1,3,8,4,2,9,7,10,6)

如何用功能风格做到这一点?

原型保罗

不确定迭代器是否真正起作用。无论如何,这是另一种选择

val A = Seq(1,3,0,4,2,0,7,0,6)  
val B = Seq(8,9,10)              
A.foldLeft((B, Seq[Int]())) {case ((b, r), e) => 
          if (e == 0 && ! b.isEmpty) (b.tail, b.head +: r) else (b, e +: r) }
   ._2.reverse
//> res0: Seq[Int] = List(1, 3, 8, 4, 2, 9, 7, 10, 6)

编辑:如果我们不在B元素中,则按注释更新以保留零

编辑2:

模式匹配变体更整洁:

A.foldLeft((B, Seq[Int]())){case ((h +: t, r), 0) =>  (t, h +: r)
                            case ((b, r), e) => (b, e +: r)}
 ._2.reverse

并且,基于什么正确的monad或序列理解来映射和携带状态?

A.mapAccumLeft(B, { case ((h +: t), 0) =>  (t, h)
                    case (b, e)  => (b, e) }

(可能我没有安装scalaz进行测试)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在sql loader中用另一个值替换一个值?

用另一个变量的值替换一个变量中的NA

如何用另一个表中的相应值替换一个表中的ID?

如何用另一个文件的值替换一个文件的值?

使用JQ用同一词典中的另一个值替换一个值

根据另一个数组中的值替换一个数组中的值

用另一个数组的相同索引的值替换一个数组中的值?

根据另一个df中的特定索引替换一个df中的值

从另一个数据框中替换一个数据框中的值

用另一个 DF 中的值替换一个 DF 中的 NA

如何用 SQL Server 中 XML 数据中的另一个节点值替换一个节点值

从另一个 data.table 替换一个 data.table 中的值

从JavaScript中的另一个对象数组替换一个对象数组的值

基于另一个 DataFrame 的公共列过滤和替换一个 Pandas DataFrame 中的值

通过Scala中的另一个Seq更新Seq的特定索引

当存在部分匹配时,如何在字典中用一个值替换另一个值:python

如何在Python中用另一个数组替换一个数组的每个元素?

如何在反应中用另一个对象键数组替换一个对象键的数组

如何在 PHP 中用另一个数组替换一个数组索引

如何用相同维度的另一个数据表的值替换一个数据表中的某个值

如何在另一个搜索词中搜索和替换一个词

如何自动比较两个句子并替换一个句子中出现但另一个句子中没有的值?

用另一个数据框的值替换一个值

比较2个文件的列,用另一个文件中1个列的值替换一个文件中不同列的值

如何在PowerShell中用另一个变量的值替换字符串

如何用R中的另一个数据帧替换一个数据帧的某些值?

根据另一列的值替换一个列中的值

如何在字典中的另一个值旁边添加一个值?

用另一个向量的条件替换一个向量的多个值