浅谈python的深浅拷贝
# 淺談深淺拷貝
?
>>> dic = {"one":["one1","one2"],"two":{"two1":"hello","two2":"world"}}
>>>
>>> dic
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
?
# 淺拷貝
>>> dic2 = dic.copy() # 對dic進行淺拷貝
>>> dic2
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>>
>>> dic["one"][0] = "change2" # 修改dic的第二層數據
>>> dic
{'one': ['change2', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>> dic2
{'one': ['change2', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
# 可見,當修改dic的第二層數據時,dic2也隨之改變
>>>
>>> dic["one"] = "change1" # 修改dic的第一層數據
>>> dic
{'one': 'change1', 'two': {'two1': 'hello', 'two2': 'world'}}
>>> dic2
{'one': ['change2', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>>
# 淺拷貝總結:當進行淺拷貝時,修改dic的第二層數據時,會影響到dic2;而修改dic的第一層數據時,dic2不會隨著dic的改變而改變;(修改dic2與修改dic同理,這里進列舉修改dic的例子)
?
# 深拷貝
>>>
>>> import copy
>>> dic
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>> dic2 = copy.deepcopy(dic) # 對dic進行深拷貝
>>> dic2
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>>
>>> dic["one"][0] = "chage2" # 修改dic的第二層數據
>>> dic
{'one': ['chage2', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>> dic2
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>>
# 可見,當修改dic的第二層數據時,dic2并沒有隨著dic的改變而改變
>>>
>>> dic["one"] = "CHAGE1"
>>> dic
{'one': 'CHAGE1', 'two': {'two1': 'hello', 'two2': 'world'}}
>>> dic2
{'one': ['one1', 'one2'], 'two': {'two1': 'hello', 'two2': 'world'}}
>>>
# 修改dic的第一層數據時,dic2也沒有隨之改變
# 深拷貝總結:當進行深拷貝時,兩者都是相互獨立的,不管修改哪一個,都不會影響到對方。
## 深淺拷貝總結:淺拷貝只是第一層是獨立的,其他層公用;而深拷貝是每一層都是獨立的,修改都不會影響到對方。
轉載于:https://www.cnblogs.com/relax1949/p/9316337.html
總結
以上是生活随笔為你收集整理的浅谈python的深浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jqueryeasyui date
- 下一篇: SpringBoot实现HandlerI