... コピーPythonのリスト
>>> a = [1,2,3]
>>> b = a[:]
>>> b
[1,2,3]
>>> b[1]=100
>>> b
[1,100,3]
>>> a
[1,2,3]
これまでのところ、とても良いです。私はaの内容でbを初期化しているので、bは別のオブジェクトを指しています。結果として、bの変化はaに影響しない。
は今、この他の例を見てみましょう:
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> b = a[:][:]
>>> b
[[1,2,3],[4,5,6],[7,8,9]]
>>> b[1][1] = 100
>>> b
[[1,2,3],[4,100,6],[7,8,9]]
>>> a
[[1,2,3],[4,100,6],[7,8,9]]
はなぜBの変化は、この時間に影響を与えていますか?前の例とは何が違うのですか?
コピーするには '[:]'を使うのはややわかりにくいことに注意してください - 一般的に文脈によって 'list()'や 'copy.copy()'を使う方がはるかにいいです。 (もちろん、回答で指摘されているように、 'copy.deepcopy()'があなたの望むものかもしれません)。 –