我在C++中研究过数据结构,现在我转向python,并在这里面临一个问题。
当我尝试访问没有循环的节点的值时,它总是通过一个错误AttributeError:'NoneType‘对象没有属性值'value’。
def solution(l):
head=ListNode(None)
head.next=l
current=head.next #also tried head.next.next gets error on this one too
print(current.value)
return True
但是当我试图在循环中打印值时,所有的值都被打印出来了,我不理解它背后的科学
def solution(l):
head=ListNode(None)
head.next=l
current=head
while(current):
print(current.value)
current=current.next
return True
这是it的输出印刷输出
考虑到其他语法是正确的
定义的节点格式如下:
# def __init__(self, x):
# self.value = x
# self.next = None
现在我的问题是,为什么它在循环中而不是在单行状态中打印值?
发布于 2022-03-27 04:13:03
假设l
是ListNode
的一个实例。
在访问变量的一个属性(如None
)之前,必须始终验证变量是否为None
。
第二种解决方案在每次向current
分配任务时都会这样做。只要current
是None
,它就会退出循环。
第一个解决方案通常会起作用,除非将空列表作为参数传递,即当l
是None
时。然后它将触发您提到的错误。在这种情况下,current
也将是None
,然后访问current.next
是无效的。
https://stackoverflow.com/questions/71635405
复制