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

Python递归展开嵌套列表返回None问题排查

排查递归展开序列函数返回None的问题

你的函数返回None大概率是两个常见错误导致的:没有返回最终收集的结果列表,或者递归调用时没有合并子序列的展开结果。

典型错误代码示例

比如你可能写出这样的代码:

def unpack_seq(lst):
    result = []
    for item in lst:
        if isinstance(item, (list, tuple)):
            # 错误:递归调用但没处理返回的展开结果
            unpack_seq(item)
        else:
            result.append(item)
    # 错误:没有返回result,函数默认返回None

修复后的正确实现

def unpack_seq(seq):
    result = []
    for item in seq:
        # 仅针对需要展开的列表/元组类型判断
        if isinstance(item, (list, tuple)):
            # 递归展开子序列,并用extend将结果合并到主列表
            result.extend(unpack_seq(item))
        else:
            # 非容器元素直接添加
            result.append(item)
    # 必须返回最终收集的结果
    return result

测试验证

运行示例输入:

lst = [5,2,3,[4,5, (6,7, [9])]]
print(unpack_seq(lst))  # 输出: [5, 2, 3, 4, 5, 6, 7, 9]

关键修复点说明

  1. 递归结果合并:递归调用子序列时,要把unpack_seq(item)返回的展开列表用extend添加到主结果里,而不是只调用函数不处理返回值。
  2. 返回结果列表:函数末尾必须return result,否则Python函数默认返回None。
  3. 类型判断精准:只针对list和tuple做展开判断,避免误处理字符串这类不需要展开的可迭代对象(如果需要处理其他容器类型,可以自行添加到判断条件里)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:35:19