2017-03-02 6 views
0

pythonの値渡しプロパティを理解できません。次のコードでrunnercurrentのコピーを作成しており、runner.nextrunner.next.nextに設定していますが、runner.nextは指定されたリンクリストの次のノードを指しています。これはどのようにしてcur.next.nextになりますか? runner.nextcur.nextはどちらも同じアドレスを指していますか?私の考えでは、ランナーは現在のコピーであり、元のcur.nextにアクセスすることはできません。私に講演してください。は、Pythonのリンクリストのnode.nextポインタを明確にする必要があります

 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は、同じオブジェクトインスタンスの2つの異なる名前に過ぎません。したがって、runnerの状態への変更は、少なくともrunnerがリスト内の次のノードに再割り当てされるまで、currentにも影響します。