1、深拷貝 --> 克隆一份,修改拷貝後的內容不對原對象內容產生影響 拷貝後修改序列中元素內容,註意:被修改的元素不能為一個序列中的某個值 a = [["北京多測師","成都多測師"],"上海多測師","深圳多測師","廣州多測師"] b = a.copy() b[1] = "天津多測師" prin ...
1、深拷貝 --> 克隆一份,修改拷貝後的內容不對原對象內容產生影響
- 拷貝後修改序列中元素內容,註意:被修改的元素不能為一個序列中的某個值
a = [["北京多測師","成都多測師"],"上海多測師","深圳多測師","廣州多測師"] b = a.copy() b[1] = "天津多測師" print(a) print(b) # 結果如下 [['北京多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] # 列表 a 中的 "上海多測師" 未修改為 "天津多測師" [['北京多測師', '成都多測師'], '天津多測師', '深圳多測師', '廣州多測師'] # 列表 b 中的 "上海多測師" 修改為 "天津多測師"
- copy 模塊中的 deepcopy()
import copy a = [["北京多測師","成都多測師"],"上海多測師","深圳多測師","廣州多測師"] b = copy.deepcopy(a) b[0][0] = "天津多測師" print(a) print(b) # 結果如下 [['北京多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] # 原列表 a 未發生改變 [['天津多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] # 列表 b 中的第一個元素中的 "北京多測師" 修改為 "天津多測師"
2、淺拷貝 --> 修改拷貝後的內容原對象內容隨之修改
a = [["北京多測師","成都多測師"],"上海多測師","深圳多測師","廣州多測師"] b = a.copy() b[0][0] = "天津多測師" print(a) print(b) # 結果如下 [['天津多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] [['天津多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] # 列表 a 和 b 中的 "北京多測師" 都修改為 "天津多測師"
- copy 模塊中的 copy()
import copy a = [["北京多測師","成都多測師"],"上海多測師","深圳多測師","廣州多測師"] b = copy.copy(a) b[0][0] = "天津多測師" print(a) print(b) # 結果如下 [['天津多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] [['天津多測師', '成都多測師'], '上海多測師', '深圳多測師', '廣州多測師'] # 列表 a 和 b 中的 "北京多測師" 都修改為 "天津多測師"
3、實例講解
# 現有老公張三有額度為 200000 元的信用卡,卡號為:20200520,已使用的額度:15000 # 現需要實現張三的老婆 Andy 也需要綁定這張信用卡進行付款 zs_card = ["張三",20200520,[200000,15000]] # 張三名下的信用卡 ad_card = zs_card.copy() # 妻子 Andy 賬戶也開了一張綁定張三信用卡的信用卡,且修改姓名和卡號 ad_card[0] = "Andy" ad_card[1] = 20200521 print(ad_card) # 列印出 Andy 的信用卡信息 ['Andy', 20200521, [200000, 15000]] zs_card[2][1] += 2000 # 此時張三使用了信用卡且刷了 2000 元 print(ad_card) # 此時 Andy 的信用卡額度也隨之變化 # 運行結果如下 ['Andy', 20200521, [200000, 15000]] ['Andy', 20200521, [200000, 17000]] # 張三刷卡後,Andy 所持的信用卡已使用的額度隨之增長