2

与Reversing a LinkedList in with multiple assignment完全相同

但如果你尝试:

pre, node, node.next = node, node.next, pre

这没用!(获取NoneType下一个没有属性)

两个都:

pre, node.next, node = node, pre, node.next

node.next, pre, node = pre, node, node.next

工作。为什么第一条错了?我认为多重分配使我无需考虑正确的顺序(或根本不考虑:)


编辑:

我会缩小范围:

if node:
   node.next, node = None, node.next
   #node, node.next = node.next, None # comment the previous line and uncomment this - boom!

我一直认为这些线是等价的......

4

1 回答 1

2

问题是您的接收变量之一执行基于分配的值的间接。多重赋值逻辑使您不必考虑右侧,因为它会自动为源值创建临时存储。但是,这不适用于作业的左侧。

因此,分配的顺序node很重要,因为分配给node.next.

于 2020-03-30T21:01:31.990 回答