0.序列指什么?

序列类型是指容器内的元素从0开始的索引顺序访问,一次可以访问一个或者多个元素,包括字符串(string)、元组(tuple)、列表(list):
The difference between tuple and list:
Tuple would not be changed, but list would.
>>> a = (1,2,3)
>>> b = [1,2,3]
>>> b.append(4)
>>> a.append(4)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
1.什么是拷贝?
Copy操作意味着两个在内存中不同的对象,所以对应的id也是不一样的。
>>> ls1 = [1,2,3]
>>> ls2 = ls1[:]
>>> id(ls1),id(ls2)
(140439195044104, 140439195058760)
>>> tp1 = (1,2,3)
>>> tp2 = ls1[:]
>>> id(tp1),id(tp2)
(140439194958816, 140439194958816)
为什么tuple的id没有变化而list的tuple发生了变化了呢?这个是由于Python解释器的实现导致的,由于tuple是immutable的,所以说没有必要在内存里维护多个一样字面意义的tuple,因此Python对于Tuple的Copy操作,实际上是增加了一个Reference Count而已,并没有做真正的Copy,所以ID的返回值是一样的。

这是浅拷贝还是深拷贝?
一般以下所得到的都是浅拷贝:


2.什么是浅拷贝?
>>> c = copy.deepcopy(a)
>>> c[3].append(8)
>>> a,c
((1, 3, 5, [2, 4, 6]), (1, 3, 5, [2, 4, 6, 8]))

4.总结:
考察是不是浅拷贝的方法是两者的容器是否指向同一个地址。
>>> a = (1,3,5,[2,4])
>>> b = a[:]
>>> b[3].append(6)
>>> a,b
((1, 3, 5, [2, 4, 6]), (1, 3, 5, [2, 4, 6]))

3.什么是深拷贝?
深拷贝是指拷贝后序列中的容器也拷贝过去,而不存在引用关系。
浅拷贝是指当序列中包含容器时,拷贝后新序列的容器只是原序列容器的引用

python 中的拷贝、浅拷贝与深拷贝相关推荐

  1. Python中赋值、浅拷贝、深拷贝

    一.赋值 Python中赋值就是对对象的简单引用,这一点与C++不同,如下: a = [1, '123', [12, 'C']] b = a 在上述情况下,a和b是一样的,他们指向同一片内存,b不过是 ...

  2. python copy函数例子,Python中的拷贝详解

    在之前的一篇文章中,我们解释了一下为什么下面的两种方式是不同的: bucket = [[] for _ in range(len(nums)+1)] bucket1 = [[]] * (len(num ...

  3. 深入浅出理解Java中数组的浅拷贝和深拷贝

    深入浅出带你理解Java中数组的浅拷贝和深拷贝 深浅拷贝的区别 深浅拷贝的区别 所谓浅拷贝,一般指的就是对象引用,例如 Teacher teacher = new Teacher(); teacher ...

  4. Python中list的复制及深拷贝与浅拷贝探究

    在Python中,经常要对一个list进行复制.对于复制,自然的就有深拷贝与浅拷贝问题.深拷贝与浅拷贝的区别在于,当从原本的list复制出的list之后,修改其中的任意一个是否会对另一个造成影响,即这 ...

  5. python数组元素赋值_Python数组中赋值,浅拷贝,深拷贝的区别

    要用到的工具 id(a) 函数用于获取对象a的内存地址. a is b 是用来比较 a 和 b 是不是指向同一个内存单元. 1. 直接赋值: 如下图用工具比较后发现直接赋值后两个列表指向同一内存单元. ...

  6. python中的拷贝

    1.赋值: 只是复制了新对象的引用,不会开辟新的内存空间.   2.浅拷贝: 创建新对象,其内容是原对象的引用.     浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数.     ...

  7. 一入python深似海--浅拷贝与深拷贝

    python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝. 要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用 ...

  8. python中如何拷贝一个对象_python题目-----Python里面如何拷贝一个对象?

    在Python中,无论是对象赋值,作为为参数传递,作为函数返回值,都是引用传递的.如果需要拷贝对象,需要使用标准库中的copy模块(import copy). 1.浅拷贝 : 使用copy.copy, ...

  9. Python中深浅拷贝的案例教程

    在本节中,您将通过运行Python中的浅拷贝和深拷贝实例来理解copy模块创造副本的不同. 在Python中复制对象 在Python中,我们使用=运算符来创建对象的副本.您可能会认为这会创建一个新对象 ...

  10. C++ 中的深入浅拷贝和深拷贝

    浅拷贝和深拷贝都是相对拷贝构造函数来讲的 下面代码实现浅拷贝, 1 #include <stdio.h> 2 #include <iostream> 3 #include &l ...

最新文章

  1. java初始化实例化_Java 类初始化和实例化以及多态理解
  2. maven项目配置Jetty服务器
  3. Linux find 用法示例
  4. 华为手机微信网络连接到服务器失败怎么办,微信H5支付在华为手机里报错 网络环境未能通过安全验证,请稍后再试 怎么解决啊 试了好多方法也不行...
  5. Web Service入门简介(一个简单的WebService示例)
  6. office 2007 oracle 9,office2007win10版下载
  7. linux - python
  8. php 5.5.7.tar.gz,编译 php-5.5.26.tar.gz
  9. OpenShift 4 之 GitOps(7)用ArgoCD部署Pacman应用集群
  10. 国家计算机二级access考试试题,全国计算机二级access试题及答案
  11. CSS浏览器兼容问题
  12. IS-IS详解(一)——IS-IS基础
  13. ArcGIS无插件加载(无偏移)天地图
  14. firewalld 规则配置
  15. 武汉大学计算机学院2010情景剧,武汉大学金秋情景剧大赛精彩落幕(组图)
  16. java-poi实现生成word
  17. 高等数学学习笔记——第八讲——数列极限的性质(2.数列极限的四则运算法则)
  18. (root用户)bash: ./xx: Permission denied解决方法
  19. 苹果开放降级_iPhone 突然开放降级...
  20. 英语基础差的人学计算机,基础差怎么去学好英语口语

热门文章

  1. 矩阵Jordan标准型过渡矩阵的求解
  2. 中南大学计算机软件专业曾进,中南大学_2012年校级优秀毕业生名单
  3. 40种javascript设计模式总结及实例代码演示
  4. 企业网中nextcloud与iRedmail邮件系统的配合
  5. Java事务处理总结
  6. 工业机器人转计算机编程,工业机器人编程怎么入门呢
  7. RJ45-网口变压器及网口变压器-cpu之间的一些抗干扰防雷设计
  8. AB PLC和ESD维护及灯的含义
  9. 极大似然估计与贝叶斯估计
  10. matlab gui仿真实验,基于Matlab GUI设计的光学实验仿真