E0_copyディープコピーではありません。を使用してディープ コピーを作成することはありませんlist()。( と は両方ともlist(...)浅いtestList[:]コピーです。)
copy.deepcopy(...)リストのディープコピーに使用します。
deepcopy(x, memo=None, _nil=[])
Deep copy operation on arbitrary Python objects.
次のスニペットを参照してください -
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> b = list(a)
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> a[0][1] = 10
>>> a
[[1, 10, 3], [4, 5, 6]]
>>> b # b changes too -> Not a deepcopy.
[[1, 10, 3], [4, 5, 6]]
今deepcopy操作を参照してください
>>> import copy
>>> b = copy.deepcopy(a)
>>> a
[[1, 10, 3], [4, 5, 6]]
>>> b
[[1, 10, 3], [4, 5, 6]]
>>> a[0][1] = 9
>>> a
[[1, 9, 3], [4, 5, 6]]
>>> b # b doesn't change -> Deep Copy
[[1, 10, 3], [4, 5, 6]]
説明するためlist(...)に、内部オブジェクトのコピーを再帰的に作成しません。同じ内部リストを参照しながら、最も外側のリストのコピーのみを作成するため、内部リストを変更すると、変更は元のリストと浅いコピーの両方に反映されます。id(a[0]) == id(b[0])whereを確認すると、浅いコピーが内部リストを参照していることがわかりますb = list(a)。