Python 3.x 当我只对一个链接列表进行更改时,原始链接列表及其副本会同时更新吗?

Python 3.x 当我只对一个链接列表进行更改时,原始链接列表及其副本会同时更新吗?,python-3.x,linked-list,Python 3.x,Linked List,我正在尝试解决LeetCode问题: 给定链接列表的头,从列表末尾移除第n个节点并返回其头 这是我的解决办法 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:

我正在尝试解决LeetCode问题:

给定链接列表的头,从列表末尾移除第n个节点并返回其头

这是我的解决办法

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:  
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        Length=1
        curr=head
        while curr.next!=None:
            Length=Length+1
            curr=curr.next
        count = 0
        curr=head
        if Length == n:
            return head.next
        while count < Length-n:
            if count == Length-n-1:
                curr.next = curr.next.next
                break
            count = count+1
            curr = curr.next
        return head
类列表节点:
定义初始值(self,val=0,next=None):
self.val=val
self.next=下一个
类解决方案:
def removeNthFromEnd(self,head:ListNode,n:int)->ListNode:
长度=1
curr=头
而现在,下一个=无:
长度=长度+1
curr=curr.next
计数=0
curr=头
如果长度==n:
返回头部。下一个
当计数

我的问题是,当我对curr(原始文件的副本)进行所有更改时,为什么这些更改也会反映在(原始文件)中?

问题是
curr
不是原始文件(节点或列表)的副本。它是您为原始列表中的给定节点指定的名称。只要不真正创建新节点(调用
节点(值)
),就不能引用原始列表中的节点以外的任何内容
curr
引用原始列表中一个接一个的节点,并在某个点上对
next
引用进行变异。这在原始列表中发生。没有其他清单在起作用

调用者在原始列表中看不到更改的唯一时间是您不返回
head
,而是返回
head.next
。在这种情况下,
head
仍然引用原始列表,而返回的节点引用将跳过第一个节点。但这两个列表都有共同的节点,除了
head
引用的节点