You need to enable JavaScript to run this app. 如何对含嵌套列表的列表求和?递归实现报TypeError如何修复
优惠活动
大模型
产品
解决方案
定价
更多

如何对含嵌套列表的列表求和?递归实现报TypeError如何修复

嵌套列表递归求和函数报错问题排查与修复

核心报错成因

  • 列表类型判断逻辑完全失效
    你写的判断条件type(lst[i]) == "list"永远无法匹配真实的列表类型:type()函数返回的是Python内部的类型对象(检测列表时会返回<class 'list'>),和字符串形式的"list"不存在相等关系。
  • 由于判断逻辑不生效,所有嵌套的列表元素都不会进入递归求和分支,全部会走到直接累加的逻辑,把列表对象和初始值为0的整数做加法,自然触发int类型无法和list类型相加的类型错误。

具体修复方案

需要调整三处细节来让函数正常工作:

  • 替换失效的类型判断:推荐使用isinstance(元素, list)做类型检测,这种写法兼容性更好,还能兼容继承自list的自定义类场景,比直接对比类型对象更符合Python编码规范
  • 把临时累加变量sum改名为total,避免覆盖Python内置的sum函数,避免后续使用时出现意料之外的问题
  • 循环可以直接遍历列表元素,不需要通过range(len(lst))做下标索引取值,代码更简洁易读

修复后的可直接运行代码:

def sum_list_recursive(lst):
    total = 0
    for item in lst:
        if isinstance(item, list):
            total += sum_list_recursive(item)
        else:
            total += item
    return total

验证效果

  • 常规双层嵌套测试:sum_list_recursive([1,2,[3,4],[5,6]]) 可正确返回结果21
  • 多层深度嵌套测试:sum_list_recursive([1, [2, [3, 4], 5], 6]) 可正确返回结果21,满足任意深度嵌套列表的求和需求

补充注意:如果列表中嵌套了数值、列表之外的其他类型元素,仍会触发类型错误,使用前需要确认列表内所有非嵌套元素均为可累加的数值类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 13:45:11