1、深拷贝  -->  克隆一份,修改拷贝后的内容不对原对象内容产生影响

  • 拷贝后修改序列中元素内容,注意:被修改的元素不能为一个序列中的某个值
  1. a = [["北京多测师","成都多测师"],"上海多测师","深圳多测师","广州多测师"]
  2. b = a.copy()
  3. b[1] = "天津多测师"
  4. print(a)
  5. print(b)
  6.  
  7. # 结果如下
  8. [['北京多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师'] # 列表 a 中的 "上海多测师" 未修改为 "天津多测师"
  9. [['北京多测师', '成都多测师'], '天津多测师', '深圳多测师', '广州多测师'] # 列表 b 中的 "上海多测师" 修改为 "天津多测师"
  • copy 模块中的 deepcopy()
  1. import copy
  2.  
  3. a = [["北京多测师","成都多测师"],"上海多测师","深圳多测师","广州多测师"]
  4. b = copy.deepcopy(a)
  5. b[0][0] = "天津多测师"
  6. print(a)
  7. print(b)
  8.  
  9. # 结果如下
  10. [['北京多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师'] # 原列表 a 未发生改变
  11. [['天津多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师'] # 列表 b 中的第一个元素中的 "北京多测师" 修改为 "天津多测师"

2、浅拷贝  -->  修改拷贝后的内容原对象内容随之修改

  1. a = [["北京多测师","成都多测师"],"上海多测师","深圳多测师","广州多测师"]
  2. b = a.copy()
  3. b[0][0] = "天津多测师"
  4. print(a)
  5. print(b)
  6.  
  7. # 结果如下
  8. [['天津多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师']
  9. [['天津多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师'] # 列表 a 和 b 中的 "北京多测师" 都修改为 "天津多测师"
  • copy 模块中的 copy()
  1. import copy
  2.  
  3. a = [["北京多测师","成都多测师"],"上海多测师","深圳多测师","广州多测师"]
  4. b = copy.copy(a)
  5. b[0][0] = "天津多测师"
  6. print(a)
  7. print(b)
  8.  
  9. # 结果如下
  10. [['天津多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师']
  11. [['天津多测师', '成都多测师'], '上海多测师', '深圳多测师', '广州多测师'] # 列表 a 和 b 中的 "北京多测师" 都修改为 "天津多测师"

3、实例讲解

  1. # 现有老公张三有额度为 200000 元的信用卡,卡号为:20200520,已使用的额度:15000
  2. # 现需要实现张三的老婆 Andy 也需要绑定这张信用卡进行付款
  3.  
  4. zs_card = ["张三",20200520,[200000,15000]] # 张三名下的信用卡
  5.  
  6. ad_card = zs_card.copy() # 妻子 Andy 账户也开了一张绑定张三信用卡的信用卡,且修改姓名和卡号
  7. ad_card[0] = "Andy"
  8. ad_card[1] = 20200521
  9. print(ad_card) # 打印出 Andy 的信用卡信息 ['Andy', 20200521, [200000, 15000]]
  10.  
  11. zs_card[2][1] += 2000 # 此时张三使用了信用卡且刷了 2000 元
  12.  
  13. print(ad_card) # 此时 Andy 的信用卡额度也随之变化
  14.  
  15. # 运行结果如下
  16. ['Andy', 20200521, [200000, 15000]]
  17. ['Andy', 20200521, [200000, 17000]] # 张三刷卡后,Andy 所持的信用卡已使用的额度随之增长

Python (深浅拷贝)的更多相关文章

  1. Python开发【第二章】:Python深浅拷贝剖析

    Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...

  2. 小学生都能学会的python(深浅拷贝)

    小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...

  3. 【0806 | Day 9】三张图带你了解数据类型分类和Python深浅拷贝

    一.数据类型分类 二.Python深浅拷贝

  4. 底层剖析Python深浅拷贝

    底层剖析Python深浅拷贝 拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不 ...

  5. 关于python深浅拷贝的个人浅见

    起初,关于python的深浅拷贝,总是习惯去用传值传址的方式去考虑,发现总是get不到规律,容易记混. python有着高度自治的内存管理,而不可变对象的内存分配,则是能省则省,就是说,无论用什么拷贝 ...

  6. python深浅拷贝与赋值

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...

  7. python 深浅拷贝 进阶

    主要理解新与旧究竟在哪里 这样也就理解了 深浅拷贝 先说说赋值,事实上python中的赋值事实上是赋值了一个引用.比如: foo1=1.0 foo2=foo1 用操作符is推断时.你能够发现结果是tr ...

  8. python深浅拷贝&垃圾回收&上下文管理(with语句)

    深浅拷贝 在Python中使用copy模块用于对象的拷贝操作. 该模块提供了两个主要的方法:浅拷贝 copy.copy() 深拷贝 copy.deepcopy() 1.浅拷贝(copy) 浅拷贝: 不 ...

  9. 关于Python深浅拷贝

    拷贝: 说明:原则上就是把数据分离出来,复制其数据,并以后修改互不影响. 何来深浅拷贝的说法? 深浅拷贝的“深”和“浅”可以理解为从变量到硬盘上的物理存储介质之间的层次的多少. 下面用一个示例来解释浅 ...

  10. python 深浅拷贝 for循环删除

    ###########################总结########################### 1. 基础数据类型补充 大多数的基本数据类型的知识.已经学完了 a='aaaa' ls ...

随机推荐

  1. 33 File 文件及目录操作

    /* * File:文件和目录路径名的抽象表示形式,File 类的实例是不可变的 * * 构造方法: * File(String pathname) 将指定的路径名转换成一个File对象 * File ...

  2. Spring温习(1)--最基础的示例

    Spring温习(1)--最基础的示例 博客分类: 框架-Spring专栏 SpringXMLBeanWebDAO 从现在开始,我将从Spring为起点,逐步复习几大框架各方面的知识,以便今后查看使用 ...

  3. loadrunner vuser 限制修改

  4. 假的数论gcd,真的记忆化搜索(Codeforce 1070- A. Find a Number)

    题目链接: 原题:http://codeforces.com/problemset/problem/1070/A 翻译过的训练题:https://vjudge.net/contest/361183#p ...

  5. 常用ElasticSearch 查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  6. golang依赖管理

    目录 使用GOPATH管理依赖 临时GOPATH 依赖查找路径 使用GOVENDER管理依赖 使用GO111MODULE管理依赖 Usage 常用命令列表 不常用命令 使用示例 开启GO111MODU ...

  7. HTTPie:替代 Curl 和 Wget 的现代 HTTP 命令行客户端

    HTTPie 工具是现代的 HTTP 命令行客户端,它能通过命令行界面与 Web 服务进行交互. -- Magesh Maruthamuthu 大多数时间我们会使用 curl 命令或是 wget 命令 ...

  8. 手机app测试用例怎么写?手机app测试点有哪些?只有干货没有水分,错过绝对后悔!

    一.前言    在当今竞争激烈的市场上一个APP的成功离不开一个可靠的测试工程师.因此,对功能和用户体验有特殊关注的App进行全面测试是必不可少的.如何做到测试用例的百分百覆盖一直是测试用例编写过程中 ...

  9. search(7)- elastic4s-search-filter模式

    现在我们可以开始探讨ES的核心环节:搜索search了.search又分filter,query两种模式.filter模式即筛选模式:将符合筛选条件的记录作为结果找出来.query模式则分两个步骤:先 ...

  10. Mac安装aws-cli全过程,通过命令行上传文件到aws s3协议服务器

    第一次使用aws,首先查询了各种资料,我第一步需要做的是安装aws-cli,而安装aws-cli之前需要安装python3,当然你安装python3之前你还需要安装homebrew,当然我正在安装的过 ...