拷贝

copy(),

>>> help(copy)

import copy

x = copy.copy(y) # make a shallow copy of y 浅拷贝
x = copy.deepcopy(y) # make a deep copy of y 深拷贝

 

>>> import copy
>>> a = [1, 2, 3, 4, ['a', 'b', 'c']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> id(a)
49228776
>>> id(b)
49228776
>>> id(c)
42855920
>>> id(d)
48641608

发现id都改变了,

对a列表添加操作看看会不会对新拷贝出来的有影响
对a列表的子列表添加操作看看会不会对新拷贝出来的有影响

>>> a.append(5)#操作列表
>>> a[4].append('d')#操作列表中的子列表
>>> a
[1, 2, 3, 4, ['a', 'b', 'c', 'd'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c', 'd'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c', 'd']]
>>> d
[1, 2, 3, 4, ['a', 'b', 'c']]

浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用

深拷贝就是完全复制新建的。

特别注意Python中的数字,字符串,原子类型没拷贝一说。

只包含‘原子类型’的元祖也不能深拷贝

 

posted @ 2014-04-23 23:21  tim胖  阅读(284)  评论(0编辑  收藏  举报