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

如何在Scala中从嵌套列表l1得到指定扁平化结果列表?

Scala嵌套列表扁平化实现

给定嵌套列表:

val l1 = List(1,2,List(3,List(4,5,6),5,6,7))

要将其转换为扁平化且去重后的列表List(1,2,3,4,5,6,7),可以通过以下方式实现:

方法一:递归+模式匹配

编写递归函数,通过模式匹配区分元素类型:如果是整数则直接保留,如果是列表则递归扁平化,最后通过distinct去重得到目标结果。

def flatten(list: List[Any]): List[Int] = list match {
  case Nil => Nil
  case (num: Int) :: rest => num :: flatten(rest)
  case (subList: List[_]) :: rest => flatten(subList) ::: flatten(rest)
}

val result = flatten(l1).distinct
// result: List[Int] = List(1, 2, 3, 4, 5, 6, 7)

方法二:flatMap结合递归

利用flatMap简化递归逻辑,同样通过模式匹配处理不同类型元素:

def flattenList(list: List[Any]): List[Int] = list.flatMap {
  case i: Int => List(i)
  case subList: List[_] => flattenList(subList)
}

val result = flattenList(l1).distinct
// result: List[Int] = List(1, 2, 3, 4, 5, 6, 7)

说明

  • 原嵌套列表扁平化后默认会保留重复元素(如5、6各出现两次),调用distinct方法可去除重复值,得到目标列表。
  • 上述函数支持任意深度的嵌套列表处理,只要元素类型为Int或嵌套的List即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:54