【发布时间】:2018-10-24 03:23:11
【问题描述】:
我正在尝试理解reverses a linked list 的一些代码。
以下是我构建链表的方式:
class Node:
def __init__(self, value, next=None):
self.value = value
self.next = next
def initialize():
start = Node(0)
prev = start
for i in range(1, 6):
cur = Node(i)
prev.next = cur
prev = cur
return start
这是答案中的正确代码:
def reverse_list(head):
new_head = None
while head:
head.next, head, new_head = new_head, head.next, head
return new_head
这就是我所拥有的:
def reverse_list(head):
new_head = None
while head:
new_head, head, head.next = head, head.next, new_head
return new_head
但是,我的代码在反转链表时会抛出 AttributeError:
AttributeError: 'NoneType' object has no attribute 'next'
我使用与正确答案完全相同的替换,只是顺序不同。为什么我的代码会抛出错误?当涉及到一行变量重新分配时,顺序是否重要?
【问题讨论】:
-
明确一点,如果您更改顺序以匹配示例代码,您的代码是否有效?
-
展示如何构建一个会引发错误的最小列表
-
@Blorgbeard 是的,如果我更改订单,它会起作用。
-
@MadPhysicist 更新
标签: python linked-list