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

Python深度嵌套列表处理:将给定嵌套列表转为目标子列表集合

问题解决方法

你的需求是将嵌套列表中每个元素展开为扁平的、由同一数字重复对应次数组成的子列表。你之前的代码存在变量未定义、逻辑错误的问题,无法正常运行。以下是几种可行的实现方式:

方法一:递归扁平化处理

通过递归函数将每个嵌套元素展开为扁平列表,再遍历原列表完成转换:

def flatten(item):
    if isinstance(item, list):
        res = []
        for sub_item in item:
            res.extend(flatten(sub_item))
        return res
    else:
        return [item]

N = [1, [2, 2], [[3, 3], 3], [[[4, 4], 4], 4], [[[[5, 5], 5], 5], 5]]
result = [flatten(item) for item in N]
print(result)
# 输出: [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5]]

方法二:迭代扁平化处理(避免递归深度限制)

如果嵌套深度极大,递归可能触发栈溢出,用迭代方式更安全:

def flatten(item):
    stack = [item]
    res = []
    while stack:
        current = stack.pop()
        if isinstance(current, list):
            stack.extend(current)
        else:
            res.append(current)
    # 因栈的特性结果顺序反转,但所有元素为同一数字,不影响最终效果
    return res

N = [1, [2, 2], [[3, 3], 3], [[[4, 4], 4], 4], [[[[5, 5], 5], 5], 5]]
result = [flatten(item) for item in N]
print(result)
# 输出与方法一一致

方法三:利用元素特征简化实现

由于每个嵌套元素内的数字完全相同,可直接提取该数字后生成对应长度的列表,效率更高:

def get_target_num(item):
    while isinstance(item, list):
        item = item[0]
    return item

N = [1, [2, 2], [[3, 3], 3], [[[4, 4], 4], 4], [[[[5, 5], 5], 5], 5]]
result = [[get_target_num(item)] * get_target_num(item) for item in N]
print(result)
# 输出符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:15:06