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

嵌套列表整数求和时持续出现TypeError错误求助

嘿,我完全懂你这种被报错卡壳的懊恼感!咱们来拆解下问题出在哪:

你遇到的operand + does not work with int and NoneTypes错误,本质是你的函数在遇到既不是整数也不是列表的元素时,没有明确返回值,默认返回了None,当递归到这类元素时,你试图把None和整数相加,自然就触发错误了。另外还有个小bug:当遍历列表遇到空列表时,你直接return netsum,这会中断整个循环——比如如果列表里有[1, [], 2],函数会直接返回0而不是继续加后面的2,这不符合需求。

修复后的代码

咱们调整一下逻辑,明确处理所有类型的元素,确保函数永远返回一个整数:

def addition_nest(x):
    # 如果是整数,直接返回
    if isinstance(x, int):
        return x
    # 如果是列表,遍历每个元素递归求和
    elif isinstance(x, list):
        netsum = 0
        for item in x:
            # 递归调用,把返回值加到总和里(即使返回0也不影响)
            netsum += addition_nest(item)
        return netsum
    # 所有其他类型(字符串、None、float等)都返回0,忽略它们
    else:
        return 0

代码解释

  1. 整数处理:直接返回该整数,这部分逻辑没问题。
  2. 列表处理:初始化总和为0,遍历列表里的每个元素,递归调用addition_nest,把每个元素的返回值累加到总和里——哪怕是空列表,递归调用后会返回0,不会中断循环。
  3. 其他类型处理:明确返回0,这样不管遇到字符串、None、浮点数还是别的什么,都不会返回None,也就避免了和整数相加的错误。

小提醒:如果你的需求是严格忽略布尔值(因为Python里bool是int的子类,isinstance(True, int)会返回True),可以把整数判断改成if type(x) is int:,这样就不会把True/False当成整数求和了。

测试示例

你可以试试这些场景验证效果:

  • 嵌套列表混合其他元素:addition_nest([1, [2, [3]], 4, "hello", None]) → 返回10
  • 空列表:addition_nest([]) → 返回0
  • 混合多种非整数元素:addition_nest([5, [6, True, 3.14], 7]) → 若用type(x) is int判断,返回18

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:30:34