python(深淺拷貝)

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 中的 "北京多測師" 都修改爲 "天津多測師"

1838715-20200503192131675-1376734147.png1838715-20200503192147708-830806231.png

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 所持的信用卡已使用的額度隨之增長


原文鏈接:https://www.cnblogs.com/ZhengYing0813/p/12823042.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章