ホームページ >バックエンド開発 >Python チュートリアル >Python 辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?

Python 辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-24 06:37:10649ブラウズ

Why Doesn't Updating a Shallow Copy of a Python Dictionary Change the Original?

浅いコピー辞書がオリジナルを更新しない理由

データ構造を扱う場合、コピーのニュアンスを理解することが重要です。 Python では、浅いコピーと深いコピーという 2 つの主要なコピー方法が提供されます。この記事では、これらの手法の違いを詳しく掘り下げ、特に浅いコピーを更新しても元の辞書に影響を与えない理由を調べます。

Python の Shallow Copy

dict.copy()辞書の浅いコピーを実行します。これは、同じコンテンツへの新しい参照を作成することを意味します。内容は値によって複製されず、同じメモリ参照を共有します。

次の例を考えてみましょう。

original = dict(a=1, b=2)
new = original.copy()
new.update({'c': 3})

浅いコピーの後、新しい参照 (new) に加えられた変更は、元の辞書 (オリジナル) は、同じ基になるデータを指しているため、変更されます。この例では、浅いコピーに 'c': 3 を追加すると、元の辞書も更新されます。

深いコピーと浅いコピーを理解する

浅いコピーでは作成のみが行われます。既存のデータへの新しい参照、ディープ コピーによってまったく新しいオブジェクトが作成されます。内容は再帰的に複製されます。これにより、新しい参照に加えられた変更が元の参照に影響を与えないことが保証されます。

copy.deepcopy() を使用すると、ディープ コピーが実行されます。この場合、新しい参照 (c) に加えられた変更は、元の辞書 (a) には影響しません。

結論

Python での浅いコピーには、新しい参照の作成が含まれます。ディープコピーは既存のデータを参照しますが、ディープコピーは内容が重複したまったく新しいオブジェクトを作成します。この区別を理解することは、あるオブジェクトへの変更が他のオブジェクトにどのような影響を与えるかを決定するため、複雑なデータ構造を扱う場合には不可欠です。

以上がPython 辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。