ホームページ  >  記事  >  バックエンド開発  >  Pythonでの深いコピーと浅いコピーの簡単な説明(コード付き)

Pythonでの深いコピーと浅いコピーの簡単な説明(コード付き)

不言
不言転載
2018-10-27 16:03:551951ブラウズ

この記事では、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 サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。