标签归档:拷贝

Python变量的复制与引用

    在python中,数据库分为可变的类型和不可变的数据类型。对于不可变的数据,复制就没有什么特别的,对于可变的数据进行复制就要注意了,因为通常我们的操作就是浅拷贝,源数据改变,所以引用的变量值都会跟着改变。好在百度中找到了这样的文章,我就直接转这里做记录了。

    简单来说,就是如果只是变量的引用(相当于增加一个别名),就直接使用 等号“= ”就可以了。否则就使用深度拷贝吧。
    深度拷贝使用的方法:

>>> from copy import deepcopy
>>> x=[[1,2],[3,4]]
>>> y=deepcopy(x)

    对于一维元组(如:[1,2,3,4])另外有个简单的方法 y=x[:] 。参见:python 元组的赋值

    字典类型类型数据的深度拷贝类似。需要注意的是它的copy方法也只是一个浅拷贝(shallow copy),和元组的[:]方法类似。

>>> from copy import deepcopy
>>> x={1:[[1,2],[3,4]]}
>>> y=deepcopy(x)
>>> x[1][0].remove(1)
>>> x
{1: [[2], [3, 4]]}
>>> y
{1: [[1, 2], [3, 4]]}
>>> 
>>> 

>>> x={1:[[1,2],[3,4]]}
>>> y=x.copy()
>>> x[1][0].remove(1)
>>> x
{1: [[2], [3, 4]]}
>>> y
{1: [[2], [3, 4]]}
>>> 

>>> 
>>> 
>>> x={1:'a',2:'b'}
>>> y=x.copy()
>>> x.pop(1)
'a'
>>> x
{2: 'b'}
>>> y
{1: 'a', 2: 'b'}
>>> 
 

参考:http://tiankonghaikuo1000.blog.163.com/blog/static/1823159720071199597313/
参考:http://www.cesclub.com/bw/jishuzhongxin/wangluokaifajishu/2011/1129/16327.html