浅いコピーと深いコピーの違いは何ですか

目次:

Anonim

NS 主な違い 浅いコピーと深いコピーの間はそれです 浅いコピーは新しいオブジェクトを作成し、元のオブジェクトで見つかった子オブジェクトへの参照をそのオブジェクトに入力します。一方、深いコピーは新しいオブジェクトを作成し、元のオブジェクトで見つかった子オブジェクトのコピーを再帰的に入力します。

Pythonなどのプログラミング言語では、=演算子を使用してオブジェクトのコピーを作成できます。ただし、オブジェクトは作成されません。元のオブジェクトの参照を共有する新しい変数のみを作成します。プログラミングでは、元の値を変更せず、新しい値のみを変更する必要がある場合があります。 Pythonでコピーを作成する方法は2つあります。それらは浅いコピーと深いコピーです。

コピーモジュール、ディープコピー、シャローコピー

コピーモジュールとは

浅いコピーまたは深いコピーが機能するためには、プログラムはコピーモジュールで構成されている必要があります。プログラマーは「コピーのインポート」モジュールを使用できます。さらに、copy()はオブジェクトの浅いコピーを返し、deepcopy()はオブジェクトの深いコピーを返します。

浅いコピーとは

浅いコピーは、元の要素の参照を格納する新しいオブジェクトを作成するプロセスです。ネストされたオブジェクト自体のコピーは作成されません。例は次のとおりです。

図1:Pythonを使用した浅いコピープログラム

上記のプログラムでは、old_listはネストされたリストです。次に、copy()メソッドを使用してnew_listにコピーされます。同様に、同じコンテンツで新しいオブジェクトを作成します。したがって、old_listとnew_listを印刷すると、コンソールに同じ出力が表示されます。

さらに、9行目で、プログラマーは中央の配列の最初のインデックス要素に新しい値を追加します。 old_listとnew_listを再度出力すると、old_listとnew_listの両方の要素が変更されていることがわかります。これは、両方のリストが同じネストされたオブジェクトの参照を共有しているためです。

ディープコピーとは

ディープコピーは、元の要素のネストされたオブジェクトのコピーを新しいオブジェクトに再帰的に挿入する新しいオブジェクトを作成するプロセスです。つまり、ディープコピーは、元のオブジェクトと関連するネストされたオブジェクトの独立したコピーを作成できます。

図2:Pythonを使用したディープコピープログラム

上記のプログラムでは、old_listはネストされたリストです。次に、deepcopy()メソッドを使用してnew_listにコピーされます。同様に、同じコンテンツで新しいオブジェクトを作成します。したがって、old_listとnew_listを印刷すると、コンソールに同じ出力が表示されます。

さらに、9行目で、プログラマーは中央の配列の最初のインデックス要素に新しい値を追加します。 old_listとnew_listを再度印刷すると、old_listのみが変更されていることがわかります。それは、それらが別々のオブジェクトであるためです。

浅いコピーと深いコピーの違い

意味

浅いコピーは、新しいコレクションオブジェクトを作成し、元のオブジェクトにある子オブジェクトへの参照をそのオブジェクトに入力するプロセスです。一方、ディープコピーは、新しいコレクションオブジェクトを作成し、元のオブジェクトにある子オブジェクトのコピーを再帰的に入力するプロセスです。したがって、これが浅いコピーと深いコピーの主な違いです。

機能性

コピープロセス

浅いコピーと深いコピーのもう1つの違いは、浅いコピーは再帰的ではないのに対し、深いコピーは再帰的であるということです。

結論

Pythonなどのプログラミング言語でオブジェクトをコピーすることが可能です。コピーには、浅いコピーと深いコピーの2種類があります。シャローコピーとディープコピーの主な違いは、シャローコピーは新しいオブジェクトを作成してから、元のオブジェクトにある子オブジェクトへの参照を入力するのに対し、ディープコピーは新しいオブジェクトを作成してから、子オブジェクトのコピーを再帰的に入力することです。オリジナルで見つかりました。

参照:

1.「Pythonの浅いコピーと深いコピー」。 Pythonの浅いコピーと深いコピー(例を含む)、ここから入手できます。 2.本物のPython。 「Pythonオブジェクトの浅いコピーと深いコピー。」 Real Python、Real Python、2018年12月12日、こちらから入手できます。

浅いコピーと深いコピーの違いは何ですか