You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将序列seq1中的0值替换为序列seq2对应索引的元素?

替换序列中指定位置元素的Scala实现

给定两个序列:

val seq1 = Seq(1, 0, 3, 0)
val seq2 = Seq(10, 20, 30, 40)

需要将seq1中的0替换为seq2对应索引位置的元素,最终得到Seq(1,20,3,40)。以下是几种简洁的实现方式:

方法一:使用zip + map

这是最直接的方案,利用zip将两个序列对应位置的元素配对,再通过map遍历处理每个配对元素:

val result = seq1.zip(seq2).map { case (elem1, elem2) =>
  if (elem1 == 0) elem2 else elem1
}
  • zip会把两个序列的元素按索引一一配对成元组,比如(1,10)、(0,20)等
  • 遍历每个元组时,判断seq1的元素是否为0,是则取seq2对应元素,否则保留原元素

方法二:处理序列长度不一致的情况

如果seq1和seq2长度可能不同,可以用zipAll来避免元素丢失,指定长度不足时的默认值:

// 当seq1更短时,补0;seq2更短时,补0(可根据需求调整默认值)
val result = seq1.zipAll(seq2, 0, 0).map { case (elem1, elem2) =>
  if (elem1 == 0) elem2 else elem1
}

内容的提问来源于stack exchange,提问作者IUnknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:40:55