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

Python 链表元素查找get_index方法 元素不存在时NoneType报错求解

报错成因分析
  • 报错本质:代码在temp为None时强行访问其data属性,触发Python属性访问错误
  • 触发问题的具体场景:
    1. 链表本身为空:方法初始将temp赋值为self.head,此时self.head为None,第一次执行while temp.data != key判断时就会触发报错
    2. 遍历到链表末尾仍未匹配到目标值:单链表最后一个节点的next属性为None,当遍历到末尾节点仍不匹配key时,执行temp = temp.next会让temp变为None,下一轮循环判断时再访问temp.data就会触发报错
  • 原有逻辑漏洞:完全默认“只要进入循环,temp就一定是有效的Node实例”,未对“遍历完所有节点仍找不到目标”的边界场景做拦截
修正方案

按照查找方法的通用行为约定调整逻辑:找到目标时返回对应索引,未找到/链表为空时返回约定的不存在标识(通用为-1),同时补上边界拦截避免属性访问越界。
修正后的get_index方法代码:

def get_index(self, key):
    temp = self.head
    count = 0
    # 只有当前节点是有效实例时才继续遍历
    while temp is not None:
        # 匹配到目标直接返回当前索引
        if temp.data == key:
            return count
        temp = temp.next
        count += 1
    # 循环走完未返回,说明无匹配值
    return -1

调整说明:

  • 用temp is not None做遍历终止判断,从根源上避免访问空对象的属性
  • 调整判断逻辑为“先校验当前节点数据、再移动指针”,不会出现指针走到空节点才触发判断的问题
  • 用return返回结果替代原有print,让方法返回值可以被后续代码复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 10:06:00