首頁 >後端開發 >Python教學 >python中深淺拷貝的簡單講解(附程式碼)

python中深淺拷貝的簡單講解(附程式碼)

不言
不言轉載
2018-10-27 16:03:552009瀏覽

這篇文章帶給大家的內容是關於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拷貝的範圍是"gh","ab","cd"三個key,若對這三個key的value修改,拷貝後物件會隨之修改,但是對其​​他資訊修改,如增加key"fx",拷貝後的物件不會修改。

copy.deepcopy是深拷貝,創建全新的物件。

以上是python中深淺拷貝的簡單講解(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除