アールグレー特売所

ゲームやら競プロやらのメモ書き

リストを複製する際の注意(python3)

pythonでリストの複製をするときに、単純に複製すると下記のように複製先での操作が複製元に伝播してしまいます。単純に複製しただけだと同じオブジェクトIDを参照するから、らしいです。

>>> a = [1, 2, 3, 4, 5]
>>> b = a
>>> del b[1]
>>> b
[1, 3, 4, 5]
>>> a
[1, 3, 4, 5]

これは次のようにcopyモジュールをimportしてdeepcopy関数を使うことで解決することができるそうです。

>>> import copy
>>> a = [1, 2, 3, 4, 5]
>>> b = copy.deepcopy(a)
>>> del b[1]
>>> b
[1, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]