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

将嵌套层级不一致的嵌套列表展开为单层列表

处理层级不一致的嵌套列表展开问题

常规的列表扁平化方法(比如两层嵌套的列表推导式、itertools.chain)没法处理层级不规则的嵌套列表,这里给你两种可行的解决方案:

方法一:递归实现

递归是最直观的方式,遍历每个元素,判断是否为列表,是就继续递归展开,不是则直接加入结果列表:

def flatten(nested_list):
    result = []
    for item in nested_list:
        if isinstance(item, list):
            result.extend(flatten(item))
        else:
            result.append(item)
    return result

测试你的示例:

list_a = [
    [[1, 2]],
    [1, 1, 2],
    [[1, 2, 2], [3], [3,4]],
    [[[1,1], [1,2,3], [1,2,1]], [1,1]]
]
list_b = flatten(list_a)
print(list_b)
# 输出: [1, 2, 1, 1, 2, 1, 2, 2, 3, 3, 4, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1]

方法二:迭代实现(避免递归深度问题)

如果嵌套层级极深,递归可能触发RecursionError,这时可以用栈来迭代处理:

def flatten_iterative(nested_list):
    result = []
    stack = list(nested_list)
    while stack:
        item = stack.pop()
        if isinstance(item, list):
            stack.extend(item)
        else:
            result.append(item)
    # 栈是后进先出,最后反转结果恢复原顺序
    return result[::-1]

运行后同样能得到符合预期的扁平化列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:55:14