zoukankan      html  css  js  c++  java
  • 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 中的 "北京多测师" 都修改为 "天津多测师"

    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 所持的信用卡已使用的额度随之增长
  • 相关阅读:
    使用Atlas简化客户端Ajax编程(Atlas 介绍)
    CheckBoxList 的数据绑定及数据获取
    ASP.NET 中数据库操作初步
    弹出对话框的同时保持页面的显示
    .net中常用的命名空间解释
    Atlas—微软的Ajax工具包(初学者必看)
    链接数据库类 DB.CS
    顶贴个性图片生成
    推荐10多个优秀的设计资源的网站
    Linux基本命令大全
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12823042.html
Copyright © 2011-2022 走看看