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

Scala中使用Filter实现同索引列表元素匹配的函数编写求助

实现Scala的matchedNumbers函数

没问题,我来帮你搞定这个需求!要实现这个函数,核心思路是先把两个列表的元素按索引位置配对,再筛选出配对后两个值相等的元素,最后提取出这些值即可。

完整实现代码

def matchedNumbers(list1: List[Int], list2: List[Int]): List[Int] = {
  // 1. 将两个列表按索引配对,得到元组列表
  list1.zip(list2)
    // 2. 筛选出元组中两个元素相等的项
    .filter { case (num1, num2) => num1 == num2 }
    // 3. 提取出配对成功的元素(取元组任意一个都可以,因为两者相等)
    .map(_._1)
}

验证示例

按照你给出的测试用例运行:

val list1 = List(1,2,3,10)
val list2 = List(3,2,1,10)
val mn = matchedNumbers(list1, list2)
// mn 的结果就是 List(2, 10),完全符合预期

额外说明

  • 这里用zip方法来配对元素,它会以较短的列表长度为准,如果两个列表长度不一致,超出部分的元素会被忽略。比如如果list1是List(1,2,3),list2是List(1,2),那么只会配对前两个元素。
  • 如果你需要处理两个列表长度不同的场景(比如对超出部分做默认值处理),可以改用zipAll方法,比如list1.zipAll(list2, 0, 0)(这里0是默认值,可根据需求调整),再后续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:09