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

运行arrayNesting函数出现'NoneType' is not iterable错误,是什么原因?

报错原因分析
  • 核心错误为列表append()方法的误用
    Python中列表的append()属于原地修改方法,不会返回修改后的新列表,执行后固定返回None。你在代码中写的new_nums = new_nums.append(nums[k])、seen = seen.append(nums[k])逻辑,会导致第一次循环结束后,new_nums和seen两个变量都被赋值为None。
    后续执行if k in seen判断时,需要对seen做迭代操作来检查成员关系,但此时seen是None类型,自然就触发了'NoneType' is not iterable的报错。就算跳过该判断,最后执行len(new_nums)时也会因为new_nums是None抛出类型错误。
额外逻辑问题

就算你删除append前的赋值操作,改成直接执行new_nums.append(nums[k])、seen.append(nums[k])修复报错,代码也不符合arrayNesting的功能要求:

  • 目前代码仅从索引0开始遍历,只会统计第一个遇到的环的长度,无法找到所有环中最长的长度
  • 外层的for num in nums循环完全没有用到循环变量num,属于无效的冗余设计
修正后的参考代码
def arrayNesting(nums):
    max_len = 0
    visited = set() # 用集合做成员查询效率远高于列表
    for i in range(len(nums)):
        if i not in visited:
            current_len = 0
            k = i
            while k not in visited:
                visited.add(k)
                current_len += 1
                k = nums[k]
            max_len = max(max_len, current_len)
    return max_len

print(arrayNesting([0,1,2])) # 输出结果为1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:42:03