反转具有多个分配的链表-不是所有分配订单都有效



与使用多重分配反转中的LinkedList完全相同

但如果你尝试:

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!

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

问题是您的一个接收变量执行基于所分配值的间接处理。多重赋值逻辑可以避免考虑右侧,因为它会自动为源值创建临时存储。然而,这不适用于分配的左侧。

因此,由于对node.next的分配,node被分配的顺序很重要。

最新更新