>>> 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略感困惑,下面对其进行解答,需要的朋友可以参考。
title: Python 中谨慎使用 copy.deepcopy()>在一次做 Benchmark 的时候,发现无论如何调代码,最后总是不尽人意,之后用 `p
接触python有一段时间了,一直没有系统的学习过,也对copy,deepcoy傻傻的分不清,故抽出时间来理一下。 下面这篇文章主要给大家介绍了关于python中copy()与deepcopy()的区别的相关资料,需要的朋友可以参考下
python基础_30_浅复制&深复制,_copy_&_deepcopy_(教学教程tutorial)
主要介绍了Python-copy()与deepcopy()区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。 copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。 deepcopy() 是真正意义...
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的简单理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
通过调用copy包里的deepcopy方法来深拷贝,其实就是在内存区在分配保存了和a相同的数据,用c来指向它,和a的内存地址不同。怎么验证就是我说的这种情况的呢?用下图来说明吧: 可以看出向a 添加一个元素,通过浅...
这篇文章主要介绍了python深copy和浅copy区别对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先先看一段代码 import copy a = [1, 2, 3, [4]] b = ...
PYTHON学习教程-Python基础学习 序列相关的函数: ...copy.deepcopy L.copy() L2 = L 字符串方法: S.split(sep=None) S.join(序列) 列表推导式 [表达式 for 变量 in 可迭代对象 if 真值表达式]
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,...
深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象 解释 b = a: 赋值引用,a和b都指向同一个对象 b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)...
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中可以通过选择合适的数据结构来...而有些情况下需要复制整个对象,这时可以使用copy包里的copy和deepcopy,这两个函数的不同之处在于后者是
copy.deepcopy L.copy() L2 = L 字符串方法: S.split(sep=None) S.join(序列) 列表推导式 [表达式 for 变量 in 可迭代对象 if 真值表达式] day01笔记: 元组 tuple 元组是不可改变的序列,同list一样,...