【python系列】字典的浅拷贝和深拷贝

来源:互联网 发布:mysql修改表中数据 编辑:程序博客网 时间:2024/05/21 06:52

第一种(使用‘=’直接赋值)是浅拷贝

第二种(使用函数 copy())是深拷贝


python 中有两种方式可以实现将一个变量的值传递给另一个变量。

一种是使用‘=’直接赋值。另一种是使用函数 copy();例如:
>>> d = {'a':'a','b':'b'}
>>> e = d.copy()
>>> f = d
>>> print e,f
{'a':'a','b':'b'}{'a':'a','b':'b'}
那么它们的效率又如何呢?我们再来看一下:
>>> import time
>>> start = time.time()
>>> g = d.copy()
>>> end = time.time()
>>> print end-start
31.8900001049
>>> start = time.time()
>>> h = d
>>> end = time.time()
>>> print end-start
19.125
我们发现使用‘=’直接赋值会比使用copy()函数快很多。为什么会这样呢?这是因为使用‘=’就等于是直接把这个d变量的引用地址赋给了h,也就是d和h两个变量都同时指向同一个存储地址,因此这种方式非常的快。而copy()呢,它不仅拷贝了d的值,而且拷贝了d的存储地址,也就是说d和g指向的是不同的存储地址。我们看一下下面的代码就明白了。
>>> h.clear()
>>> print h
{}
>>> print d
{}
>>> g
{'a': 'c', 'b': 'b'}

回想一下吧。就是这个理。


摘自:http://blog.sina.com.cn/s/blog_881a241b0100wssb.html

0 0