>>> X = [1, 2, 3]
>>> L = ['a', X, 'b'] # Embed references to X's object.
>>> D = {'x':X, 'y':2}
这里X,L,D三个变量中的引用都指向了同一个对象[1,2,3],在其中任意一个修改,都会影响其他的变量。
有时候我们可能并不希望出现这样的情况,我们可能需要每个变量中都有一个对象的单独拷贝。实现方法如下:
- * 使用无限制的slice来拷贝sequence对象,eg:A = L[:]
- * 对于Dictionary,使用copy函数来实现对象拷贝 eg:B = D.copy()
- * 一些函数也会产生对象的拷贝,例如list
- * 标准库copy可以用来完成完全的拷贝, eg:import copy,然后调用X=copy.deepcopy(Y);
值得注意的是,前面的第一二种方法得到的拷贝,都是最高层的拷贝,而并部拷贝嵌套的数据结构,如果要彻底的拷贝,就可以使用最后一种方法,他是递归的拷贝所有的嵌套的对象。
没有评论:
发表评论