代入と浅いコピーとPythonの深いコピー

浅いコピー

浅いコピーは新しい複合オブジェクトを構築し、(可能な限り)元のオブジェクトに参照をp>

ここでは、上記のすべてのリストに元のリストと同じ値が含まれています。

>>> print(nums == m1 == m2 == m3)
True

ただし、それぞれのメモリアドレスは異なります。,

これは、今回、各リストのオブジェクトに独自の独立したメモリアドレスがあることを意味します。

今、私たちはより興味深い部分に移動します。 元のリストが複合オブジェクト(例えば、リストのリスト)である場合、浅いコピーの後でも、新しいリスト要素は元の要素を参照します。

したがって、リストのような変更可能な要素を変更すると、変更は元の要素に反映されます。, より良い理解を得るために、以下の例を見てみましょう。

上記の例で見るように、新しいリストの内部リスト要素を変更している間、aおよびbまだ同じメモリアドレス(元のリスト)を指しています。

したがって、新しいリストb独自のメモリアドレスを持っていますが、その要素は持っていません。, これは、浅いコピーでは、リストの要素を新しいオブジェクトにコピーするのではなく、単にメモリアドレスへの参照をコピーするためです。

したがって、元のオブジェクトに変更を加えている間は、コピーされたオブジェクトに反映され、その逆もまた同様です。

これは浅いコピーの特徴です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ