找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

python 深拷贝和浅拷贝的区别

[复制链接]
# 深拷贝和浅拷贝的区别
# import copy
# a=['a','b',['a',['1']]]
# b=copy.copy(a)
# c=copy.deepcopy(a)
# a.append('c')
# a[2][1].append('2')
# print('a列表',a)
# print('b列表',b)
# print('c列表',c)

本帖被以下淘专辑推荐:

  • · python|主题: 2, 订阅: 0
分享至 : QQ空间
收藏
技术无它,唯手熟尔!!

4 个回复

倒序浏览
运行结果:
a列表 ['a', 'b', ['a', ['1', '2']], 'c']
b列表 ['a', 'b', ['a', ['1', '2']]]
c列表 ['a', 'b', ['a', ['1']]]
技术无它,唯手熟尔!!
回复 使用道具 举报
浅拷贝之所以称之为浅拷贝,是它仅仅只拷贝了一层,在列表a中有一个嵌套的list,如果我们修改了它,情况就不一样了
技术无它,唯手熟尔!!
回复 使用道具 举报
所谓“深拷贝”,是指创建一个新的对象,然后递归的拷贝原对象所包含的子对象。因此,它的时间和空间开销要高。深拷贝出来的对象与原对象没有任何关联
技术无它,唯手熟尔!!
回复 使用道具 举报
为什么使用了深拷贝,a和b中元素的id还是一样呢?

答:这是因为对于不可变对象,当需要一个新的对象时,python可能会返回已经存在的某个类型和值都一致的对象的引用。而且这种机制并不会影响 a 和 b 的相互独立性,因为当两个元素指向同一个不可变对象时,对其中一个赋值不会影响另外一个。
技术无它,唯手熟尔!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册