Python 多重赋值似乎不会同时发生


class ListNode:
def __init__(self,val,next=None) -> None:
self.val=val
self.next=next
n3=ListNode(3,n4)
n2=ListNode(2,n3)
n1=ListNode(1,n2)
n2,n2.next,n1=n2.next,n1,n2

如果同时发生,则为n2。下一步应该是n1,但结果显示n2.next=n3。它是否意味着n2 ?Next =n1在n2=n2之后执行。下一步是应用?我做错了什么?

在python赋值语句中,在将值赋给左侧之前,总是先对右侧求值。右边每个变量的结果,也就是n2。接下来,n1 n2求值,使得n2。下一个是3,n1是1 n2是2。然后赋值从左到右进行。

n2。接下来先赋值给n2, n1再赋值给n2。然后n2赋值给n1。所以你是对的,它是按顺序进行的,不是同时进行的。

Python从左到右计算表达式。注意,在求值赋值时,右边在左边之前求值。

文档

分配过程如下:

初始值:

n3 = ListNode(3,n4)
n2 = ListNode(2,n3)
n1 = ListNode(1,n2)
n2, n2.next, n1 = n2.next, n1, n2

右边求值:

A. n2.next = n3 = (3, n4)
B. n1 = (1, n2)
C. n2 = (2, n3)

从左到右赋值

1. Now n2 is n2.next which is n3. So n2 = (3, n4) {From A}
2. n2.next is n1 i.e, n2.next = n1. So n2 = (3, n1) {From B}
3. n1 is n2. So n1 = (2, n3) {From C}

所以最终值是:

n1 = (2, n3)
n2 = (3, n1)

相关内容

  • 没有找到相关文章

最新更新