MergeTwoList:在Python中内存是如何工作的?

MergeTwoList:在Python中内存是如何工作的?,python,merge,singly-linked-list,Python,Merge,Singly Linked List,我正在处理leetcode中的合并两个列表问题。这个问题需要以排序方式合并两个链表。解决方案代码如下所示。在代码中,变量prev不断更新,最终只有来自l1或l2的一个节点。然而,每当执行prev.next时,prehead似乎都会记住。但是,它不会记住何时执行prev=prev.next 例如,如果为l1=1->3->4、l2=1->2->4运行此代码。最后: prev = ListNode{val: 4, next: ListNode{val: 4, next: None}}. prehe

我正在处理leetcode中的合并两个列表问题。这个问题需要以排序方式合并两个链表。解决方案代码如下所示。在代码中,变量prev不断更新,最终只有来自l1或l2的一个节点。然而,每当执行prev.next时,prehead似乎都会记住。但是,它不会记住何时执行prev=prev.next

例如,如果为
l1=1->3->4、l2=1->2->4运行此代码。最后:

prev = ListNode{val: 4, next: ListNode{val: 4, next: None}}. 

prehead = ListNode{val: -1, next: ListNode{val: 1, next: ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 3, next: ListNode{val: 4, next: ListNode{val: 4, next: None}}}}}}}
prehead=ListNode(-1)
prev=预压头
而l1和l2:

如果l1.val是因为这个输入,我假设它是来自同一个类?你的问题是什么?我建议您将对象写在一张纸上,并在赋值时从变量和对象属性中绘制指向对象的指针。我的问题如下:我们有两个相互复制的链表(prev和prehead)。我理解,当我们第一次执行prev.next=l1时,prehead会更新。然后,我们将prev重新声明为prev=prev.next。到目前为止还不错,但是,我们做了prev。接下来,prehead会更新,就好像没有重新声明prev一样。我的意思是,在重新声明后,prev的变化如何影响prehead?