この記事では、Python での深いコピーと浅いコピーについて簡単に説明します (コード付き)。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
レビューし、徹底的にコピーします。
上記のコード:
# -*- coding: utf-8 -*- """ Created on Thu Sep 20 14:18:48 2018 @author: Lenovo """ import copy,json a={"ab":1,"cd":{"ef":2},"gh":[1,2,3]} print "a1:",a b=dict(a["cd"]) c=copy.copy(a) d=copy.deepcopy(a) e=a["cd"] a["cd"]["xy"]=3 a["fx"]=5 a["cd"]["ef"]=20 print "a2:",a print "b :",b print "c :",c print "d :",d print "e :",e
結果:
a1: {'gh': [1, 2, 3], 'ab': 1, 'cd': {'ef': 2}} a2: {'gh': [1, 2, 3], 'fx': 5, 'ab': 1, 'cd': {'xy': 3, 'ef': 20}} b : {'ef': 2} c : {'cd': {'xy': 3, 'ef': 20}, 'ab': 1, 'gh': [1, 2, 3]} d : {'cd': {'ef': 2}, 'ab': 1, 'gh': [1, 2, 3]} e : {'xy': 3, 'ef': 20}
結果からわかります:
dict() コマンドは新しい辞書を作成します;
"="割り当ては「参照」の概念を使用することと同じです。
copy.copy は浅いコピーです。コピーされた情報に対する変更は、それに応じて変更され、コピーされていない他の情報が追加または追加されます。変更、浅いコピー オブジェクトは変更されません;
たとえば、c copy のスコープは「gh」、「ab」、「cd」の 3 つのキーであり、これら 3 つのキーの値が変更された場合、その後コピー オブジェクトはそれに応じて変更されますが、キー「fx」を追加するなど、他の情報が変更された場合、コピーされたオブジェクトは変更されません。
copy.deepcopy はディープ コピーで、まったく新しいオブジェクトを作成します。
以上がPythonでの深いコピーと浅いコピーの簡単な説明(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。