質問: li li3.append(li2) print(li3) #[1, 2, [3, 4]] と表示される。 print(li) #[1, 2, [3, 4]] と表示される。 ``` Python3です。 上記のように、 liをli3に代入し そのli3にappendでli2を追加すると[1, 2, [3, 4]] と表示されるのは良いのですが、 なぜかliまでもが変更されてしまいます。 単純なコード故に、余計どうしてこうなるのか分かりません。 解決方法と、よろしければ理由も教えてください。 よろしくお願いします。 Python --3.5.2 OS --Windows8.1 Text editor --Eclipse
回答: li3=liというのはliが見ているものをli3も見るということです。 つまり同じオブジェクトを参照しているのです。 li3.append(li2)というのはli.append(li2)というのと同じ意味です。 同じオブジェクトを参照しているのですから当然どちらも変わりますよ。 重要なのはコピーではなく参照しているということです もしコピーしたいというのであれば、このようにすればおkです ``` li = [1,2] li2 = [3,4] li3 = li[:] li3.append(li2) print(li) print(li3) ```