`
诗意的栖居
  • 浏览: 268508 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

python copy and deepcopy

 
阅读更多
>>> a=[[1,2],(3,5),123,[1,2,3,4]]

>>> b=copy.copy(a)

>>> b
[[1, 2], (3, 5), 123, [1, 2, 3, 4]]

>>> b[2]=456

>>> b
[[1, 2], (3, 5), 456, [1, 2, 3, 4]]

>>> a
[[1, 2], (3, 5), 123, [1, 2, 3, 4]]

a之所以没有变,是因为b修改的是不可变对象。
拷贝了一个不可变的对象的引用, 修改你得到的变量只会让该变量的引用指向一个新的对象, 别指望还能改变原来的变量的引用所指向对象的值。

>>> b[0][1]=0

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> b
[[1, 0], (3, 5), 456, [1, 2, 3, 4]]

copy.copy只是复制的a本身,a里面的对象并没有被复制,还是引用的。等于属于浅copy


>>> c=copy.deepcopy(a)

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c[0][1]=12

>>>c
[[1, 12], (3, 5), 123, [1, 2, 3, 4]]

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c[2]=457

>>> a

[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c

[[1, 4], (3, 5), 457, [1, 2, 3, 4]]

copy.deepcopy是连内部的对象一块复制的
分享到:
评论

相关推荐

    浅谈python中copy和deepcopy中的区别

    Python学习过程中会遇到许多问题,最近对copy和deepcopy略感困惑,下面对其进行解答,需要的朋友可以参考。

    x1ah#Blog#Python 中谨慎使用 copy.deepcopy()1

    title: Python 中谨慎使用 copy.deepcopy()>在一次做 Benchmark 的时候,发现无论如何调代码,最后总是不尽人意,之后用 `p

    python中copy()与deepcopy()的区别小结

    接触python有一段时间了,一直没有系统的学习过,也对copy,deepcoy傻傻的分不清,故抽出时间来理一下。 下面这篇文章主要给大家介绍了关于python中copy()与deepcopy()的区别的相关资料,需要的朋友可以参考下

    python基础 30 浅复制&深复制, copy & deepcopy (教学教程tutorial)

    python基础_30_浅复制&深复制,_copy_&_deepcopy_(教学教程tutorial)

    Python-copy()与deepcopy()区别详解

    主要介绍了Python-copy()与deepcopy()区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    【Python 技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

    copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。 copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。 deepcopy() 是真正意义...

    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    import copya = [1, 2, 3, 4, [‘a’, ‘b’]] #原始对象b = a #赋值,传对象的引用c = copy.copy(a) #对象拷贝,浅拷贝d = copy.deepcopy(a) #对象拷贝,深拷贝a.append(5) #修改对象aa[4]....

    Python中浅拷贝copy与深拷贝deepcopy的简单理解

    今天小编就为大家分享一篇关于Python中浅拷贝copy与深拷贝deepcopy的简单理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    对于Python深浅拷贝的理解

    通过调用copy包里的deepcopy方法来深拷贝,其实就是在内存区在分配保存了和a相同的数据,用c来指向它,和a的内存地址不同。怎么验证就是我说的这种情况的呢?用下图来说明吧: 可以看出向a 添加一个元素,通过浅...

    python深copy和浅copy区别对比解析

    这篇文章主要介绍了python深copy和浅copy区别对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先先看一段代码 import copy a = [1, 2, 3, [4]] b = ...

    PYTHON学习教程-Python基础学习

    PYTHON学习教程-Python基础学习 序列相关的函数: ...copy.deepcopy L.copy() L2 = L 字符串方法: S.split(sep=None) S.join(序列) 列表推导式 [表达式 for 变量 in 可迭代对象 if 真值表达式]

    02-Python基础第一部分.zip

    02-Python基础第一部分 # 01_deepcopy.py # 此程序示意 深拷贝 import copy # 导入copy模块 L = [3.1, 3.2] L1 = [1, 2, L] L2 = copy.deepcopy(L1) # 深拷贝 print(L1) # [1, 2, [3.1, 3.2]] print(L2) # [1, 2,...

    Python直接赋值及深浅拷贝原理详解

    深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象 解释 b = a: 赋值引用,a和b都指向同一个对象 b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)...

    python-拷贝构造函数.docx

    def __init__(self, value): self.value = value def __copy__(self): new_object = MyClass(self.value) return new_object def __deepcopy__(self, memo): new_object = MyClass(copy.deepcopy(self.value,...

    Python性能优化的20条建议

    优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来...而有些情况下需要复制整个对象,这时可以使用copy包里的copy和deepcopy,这两个函数的不同之处在于后者是

    python基础2day01.txt

    copy.deepcopy L.copy() L2 = L 字符串方法: S.split(sep=None) S.join(序列) 列表推导式 [表达式 for 变量 in 可迭代对象 if 真值表达式] day01笔记: 元组 tuple 元组是不可改变的序列,同list一样,...

Global site tag (gtag.js) - Google Analytics