関数の機能:リストの浅いコピーを作成する
例1 : 整数が要素のリストのコピー
>>> lst = [1, 2, 3]
>>> lstCpy = lst.copy()
>>> lstCpy
[1, 2, 3]
copy関数によりlstCpyというリストが新たに生成されました。 下記のように、lstCpyの要素を変更してもlstは変化しません。
>>> lstCpy[0] = 15
>>> lstCpy
[15, 2, 3]
>>> lst
[1, 2, 3]
例2 : リストが要素のリストのコピー
>>> lst = [[2,3,4],[7,8,9]]
>>> lstCpy = lst.copy()
>>> lstCpy
[[2, 3, 4], [7, 8, 9]]
コピー対象のリストの要素が、リストのような変更可能(mutable)なオブジェクトの場合、コピー先のリストの要素のリストはコピー元のリストの要素のリストと同一のオブジェクトとなります。
>>> lst[0] is lstCpy[0]
True
なので、リストの要素のリストを変更すると、コピー元とコピー先の要素がどちらも変更されます。
>>> lstCpy[0][0] = 100
>>> lstCpy
[[100, 3, 4], [7, 8, 9]]
>>> lst
[[100, 3, 4], [7, 8, 9]]