2017-03-02 200 views
0

我无法理解在python中传值属性。在下面的代码中,runner正在复制current,并且runner.next指向给定链表的下一个节点,而我们将runner.next设置为runner.next.next,这怎么影响cur.next.nextrunner.nextcur.next都指向相同的地址吗?因为在我看来,跑步者只是当前的副本,并且无法访问原始的cur.next。请讲课。需要关于node.next指针在python链表中的说明

 def remove_dups_followup(ll): 
      if ll.head is None: 
       return 

      current = ll.head 
      while current: 
       runner = current 
       while runner.next: 
        if runner.next.value == current.value: 
         runner.next = runner.next.next 
        else: 
         runner = runner.next 
       current = current.next 

      return ll.head 

回答

0
runner = current 

这不会创建副本current,而是赋予了另一个名称也被称为current的对象。所以对于同一个对象实例,runnercurrent只是两个不同的名称。因此对runner状态的任何更改也会影响current,至少会将runner重新分配给列表中的下一个节点。