python dictionary的拷貝與直接賦值


練習來自於edx上的MITx:6.00.1x
是建立一個hand的類,需要完成其中一個類的函數。
函數的實現過程中,用到了類的復制相關。下面以示例的形式來進行相關說明。

假設現在有兩個dic,一個為dic1,另一個為dic2。

  1. dic1 = dic2
    這種形式下,dic1只是dic2的一種別稱(alias)。改變其中一個就會改變另一個。
  2. dic1 = dic2.copy()
    這是dictionary的淺拷貝。即只拷貝父對象,而不會拷貝子對象。子對象還是采取直接賦值方式,改變其中一個另一個就會改變。
  3. dic1 = dic2.deepcopy()
    deepcopy需要引入copy模塊import copy。這種就會拷貝子對象和父對象。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
dict1 =  {'user':'runoob','num':[1,2,3]}
 
dict2 = dict1          # 淺拷貝: 引用對象
dict3 = dict1.copy()   # 淺拷貝:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,還是引用
 
# 修改 data 數據
dict1['user']='root'
dict1['num'].remove(1)
 
# 輸出結果
print(dict1)
print(dict2)
print(dict3)

結果會是

{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'runoob'}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM