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

Elixir 如何将嵌套列表(列表的列表)转换为一维扁平化列表

Elixir嵌套列表转一维列表的实现方法

针对你提出的一层嵌套列表拍平需求,可通过以下几种常用方案实现:

  • 方法1:调用标准库内置的List.flatten/1函数
    这是最通用的解决方案,支持处理任意层级的嵌套列表,你的场景可直接调用:
nested_list = [[1, 2, 3], [4,5], [6,7,8], [9]]
List.flatten(nested_list)
# 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

如果明确只有一层嵌套,也可以使用List.flatten/2限制拍平层级,性能会略优。

  • 方法2:使用Enum模块的拼接函数
    如果仅需要处理一层嵌套,直接调用Enum.concat/1即可,它本身就是用来将列表的列表拼接为一维列表的工具函数:
nested_list = [[1, 2, 3], [4,5], [6,7,8], [9]]
Enum.concat(nested_list)
# 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

也可以用Enum.reduce/3手动实现拼接逻辑,适合需要自定义处理规则的场景:

nested_list = [[1, 2, 3], [4,5], [6,7,8], [9]]
Enum.reduce(nested_list, [], fn sub_list, acc -> acc ++ sub_list end)
# 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 方法3:通过列表推导式实现
    需要灵活添加过滤、转换逻辑时,可使用列表推导式遍历所有子元素:
nested_list = [[1, 2, 3], [4,5], [6,7,8], [9]]
for sub_list <- nested_list, item <- sub_list, do: item
# 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

提示:如果嵌套列表存在超过1层的嵌套、或者包含非列表类型的元素,优先选择List.flatten/1,另外两种方案仅适用于明确只有一层嵌套、所有子元素均为列表的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:04