ホームページ > バックエンド開発 > Python チュートリアル > Pythonの深いコピーと浅いコピーの違い

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

爱喝马黛茶的安东尼
リリース: 2022-06-08 14:09:22
オリジナル
3594 人が閲覧しました

Python でのオブジェクトの割り当ては、実際にはオブジェクトへの参照です。オブジェクトが作成されて別の変数に割り当てられると、Python はオブジェクトをコピーせず、オブジェクトへの参照のみをコピーします。

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

#浅いコピー: 最も外側のオブジェクト自体がコピーされ、内部要素は参照付きでコピーされるだけです。つまり、オブジェクトは一度コピーされますが、オブジェクト内で参照されている他のオブジェクトはコピーされません。

ディープ コピー: 周辺要素と内部要素の両方が、参照ではなくオブジェクト自体をコピーします。つまり、オブジェクトが一度コピーされると、そのオブジェクト内で参照されている他のオブジェクトもコピーされます。

ディープ コピーとシャロー コピーの役割

1. メモリ使用量の削減
2. 将来的には、データのクリーニング、変更、または保存時に、データが変更された後に元のデータが見つからないように、元のデータのコピーを作成します。

関連する推奨事項: 「Python ビデオ チュートリアル

浅いコピー (コピー): 親オブジェクトをコピーしますが、オブジェクトの内部の子オブジェクトはコピーしません。

ディープ コピー (deepcopy): コピー モジュールの deepcopy メソッドは、親オブジェクトとその子オブジェクトを完全にコピーします。

>>>a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
ログイン後にコピー

深いコピーにはコピー モジュールの導入が必要です:

>>>import copy
>>> c = copy.deepcopy(a)
>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
ログイン後にコピー

1. b = a.copy(): 浅いコピー、a と b は独立したオブジェクトですが、それらのサブオブジェクトですまだ Unified オブジェクトを指しています (参照です)。

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

2. b = copy.deepcopy(a): ディープ コピー、a と b は親オブジェクトとその子オブジェクトを完全にコピーし、完全に独立しています。

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

以上がPythonの深いコピーと浅いコピーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート