Python の浅いコピーと深いコピー: 辞書への影響を理解する
辞書を使用して作成された、Python の辞書の浅いコピー.copy() では、元の辞書が期待どおりに更新されない可能性があります。この動作は、浅いコピーと深いコピーの概念に由来しています。
浅いコピーとは何ですか?
浅いコピーでは、辞書の内容が参照されます。値によってコピーされるよりも。これは、元の辞書とコピーされた辞書の両方が、同じ基礎となるデータ構造を指していることを意味します。
デモ:
>> original = dict(a=1, b=2) >> new = original.copy() >> new.update({'c': 3}) >> original {'a': 1, 'b': 2}
予想に反して、元の辞書は変更されません。浅いコピーが更新された後。これは、データへの参照がコピーではなく共有されるためです。
リストの違い:
辞書とは異なり、リストを浅くコピーすると、データへの参照が共有されます。データ。これは、リストには参照による値が含まれているためです。
>> original = [1, 2, 3] >> new = original >> new.append(4) >> new, original ([1, 2, 3, 4], [1, 2, 3, 4])
この場合、元のリストと新しいリストの両方が同じデータを参照するため、一方に加えられた変更は他方にも影響します。
copy.deepcopy() によるディープ コピー
辞書の完全に別個のコピー (その内容も含む) を作成するには、 copy.deepcopy() を使用する必要があります。この関数は、構造と値を値ごとにコピーし、完全な分離を保証します。
import copy >> original = dict(a=1, b=2) >> new = copy.deepcopy(original) >> new.update({'c': 3}) >> original {'a': 1, 'b': 2} >> new {'a': 1, 'c': 3, 'b': 2}
コピー操作のタイプ:
以上がPython 辞書の浅いコピーと深いコピー: `copy()` が失敗するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。