
データ構造のコピー方法
代入演算子を使う方法ではコピーができていないというのなら、では何が行われているの
でしょうか?実は、リストへの参照を
first
と
second
で共有しているのです。
この問題を解決するために、リストには
copy
メソッドがあります。
copy
メソッドでは
正しくコピーできます。動作を調べてみましょう。
>>> third = second.copy()
>>> third
[1, 2, 3, 4, 5, 6]
(
copy
メソッドのおかげで)
third
を作成できました。
third
にオブジェクトを追加し
て何が起こるか確認しましょう。
>>> third.append(7)
>>> third
[1, 2, 3, 4, 5, 6, 7]
>>> second
[1, 2, 3, 4, 5, 6]
2
章 リストデータ
you are here
73
third
リストは
オブジェクト
1
つ分だけ
大きくなっています。
first second
1 2 3 4 5 6
first second
third
1 2 3 4 5 6
1 2 3 4 5 6
first second
third
1 2 3 4 5 6 7
1 2 3 4 5 6
かなり改善されました。既存の
リストは変更されていません。
リストのコピーには
代入演算子を
使ってはいけない。
copy
メソッドを
使うこと。
かなり改善されました。
新しいオブジェクトは
third
に
だけ追加され、
first
と
second
には追加されていません。