妙数

python中copy与deepcopy的区别
python中的copy方式有copy和deepcopy,本文对两种拷贝方式进行简单比较copy仅拷贝对象本身,而...
扫描右侧二维码阅读全文
30
2018/10

python中copy与deepcopy的区别

python中的copy方式有copy和deepcopy,本文对两种拷贝方式进行简单比较

copy仅拷贝对象本身,而不对对象的子对象进行拷贝,故当对象中的子对象修改时,copy也会随着修改
deepcopy是真正意义上的复制,即从新开辟一片空间。我们经常说的复制实际上就是deepcopy

代码示例

import copy

a = [1, 2, 3, 4, ['a', 'b']]
b = a  # 直接赋值给b
c = copy.copy(a)  # 浅copy
d = copy.deepcopy(a)  # 深copy
a.append(5)  # 操作列表a
a[4].append('c')  # 操作列表a中的元素
print(a, id(a))
print(b, id(b))
print(c, id(c))
print(d, id(d))
  • 输出结果

copy.png

总结

b = a; 将a赋值给b的时候,b不创建新的内存空间。
copy 仅拷贝a对象,会创建新的内存空间,对a对象的操作不会影响copy的值,但是修改a对象中的子对象值会影响copy的值,比如a中含有列表,对列表赋值后,copy的值会随之改变。
deepcopy 拷贝a列表,存储到新的内存空间,对a对象的任何操作不会影响到deepcopy的值

最后修改:2018 年 10 月 30 日 11 : 40 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论