在这种情况下,python中的多重赋值如何?[复制]

How does the multiple assignment from in this case in python? [duplicate]

提问人: 提问时间:6/13/2020 更新时间:6/13/2020 访问量:58

问:

下面的代码用于在给定列表头部的情况下修改链表

class Solution:
        def reverseList(self, head: ListNode) -> ListNode:

            if head is None or head.next is None:
                return head

            prev = None
            curr = head

            while curr:
                curr.next, prev, curr = prev, curr, curr.next

            return prev

当 curr.next 在开始时被分配 prev 时,我们如何分配 curr = curr.next(第三个赋值)?

通常,一个临时变量用于存储 curr.next 的值,我们在这里如何绕过它?

python 链表 多重赋值

评论

0赞 wjandrea 6/13/2020
TL的;博士“在左侧之前评估右侧”
0赞 6/13/2020
请解释一下,这是否意味着 curr = curr.next 将首先发生?问题仍然存在,对吧?
0赞 wjandrea 6/13/2020
不,作业本身是从左到右评估的。我的意思是,在进行任何赋值之前,左边的名称被“解析”为对象。例如,循环位于一长串列表的中间。右侧将被计算: -> ,然后分配如下:prev, curr, curr.next<ListNode object at 0x100>, <ListNode object at 0x200>, <ListNode object at 0x300>curr.next = <ListNode object at 0x100>; prev = <ListNode object at 0x200>; curr = <ListNode object at 0x300>
1赞 wwii 6/13/2020
how are we bypassing that here?- 当解释器在右侧计算时,结果是一个对象。解释器存储该对象,以便以后将该对象分配给 时使用。所以虽然主要原因是由于评估顺序。另一部分原因是名称只是指向对象,它们不是对象 - 关于 Python 名称和值的事实和神话curr.nextcurr.next
0赞 wjandrea 6/13/2020
我添加了一个重复问题的答案,以真正说明这一点

答: 暂无答案