与使用多重分配反转中的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
被分配的顺序很重要。