python 深拷贝deepcoy

来源:互联网 发布:汉唐香莎温泉会所js 编辑:程序博客网 时间:2024/06/03 17:08

python 中的变量定义简单,直接赋值即可使用。但是也存在很多坑,就像listl列表和dict字段这类数据结构的拷贝问题。

问题

定义列表a,查看其地址

>>> a=[1,2,3]>>> id(a)46832520L

将a赋值给b,并查看地址

>>> b=a>>> id(b)46832520L

可以看到,a,b的指向同一块内存。
接着, 对b附加元素

>>> b.append(4)>>> print a[1, 2, 3, 4]>>>

可以看到a中也同样的附加了一个元素,此时a,b完全一样。

如何在b中添加元素,而不影响a呢?
答案就是深度拷贝。

深度拷贝

引入copy包

>>>import copy>>> a=[1,2,3]>>> id(a)46832520L>>> b=copy.deepcopy(a)>>> id(b)46832328L>>> b.append(4)>>> print a[1, 2, 3]>>> print b[1, 2, 3, 4]>>>

经过深度拷贝后,a,b内存地址不同,对b附加元素,对a完全没有影响。

原创粉丝点击