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

如何使用Elixir内置函数仅展平嵌套列表的一层?

如何在Elixir中仅展平嵌套列表的一层?

假设你有一个深度为3的嵌套列表:

[
  [[1, 2, 3], [4, 5, 6]],
  [[1, 2, 3], [4, 5, 6]]
]

使用List.flatten/1会直接完全展平所有层级,得到:

[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

但如果只想展平最外层的一层,得到如下结果:

[
  [1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]
]

可以用Elixir内置的Enum.flat_map/2函数实现,只需要把每个外层元素直接返回即可,因为flat_map会自动将每个元素(这里是内层的子列表)合并到结果列表中:

nested_list = [
  [[1, 2, 3], [4, 5, 6]],
  [[1, 2, 3], [4, 5, 6]]
]

Enum.flat_map(nested_list, & &1)
# 输出:[[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]

原理很简单:Enum.flat_map/2会遍历列表中的每个元素,对每个元素执行传入的函数(这里的& &1就是直接返回元素本身),然后将所有返回的列表拼接在一起——正好实现了仅展平最外层一层的效果,同时完全保留内部元素的顺序。

另外也可以用List.foldl/3手动拼接,不过Enum.flat_map/2是最简洁的内置方案:

List.foldl(nested_list, [], fn sublist, acc -> acc ++ sublist end)

内容的提问来源于stack exchange,提问作者ahmed-el-awad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:43:14