<标准库> copy模块
本帖最后由 戴宇轩 于 2015-3-21 11:24 编辑这个模块有两个函数, copy和deepcopy:
1. copy.copy (浅拷贝)只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy (深拷贝) 拷贝对象及其子对象。也就是说, 如果列表里还有列表, deepcopy也会将其拷贝, 但是copy做不到这一点
看了上面的解释, 大家可能看得云里雾里, 这里有一个很好的例子:import copy
a = ]#原始列表
print('原始列表 =', a)
b = a# 把a赋值给b
c = copy.copy(a)# 浅拷贝a, 等效于a[:]
d = copy.deepcopy(a)# 深拷贝a
a.append(5)# 修改对象a
a.append('c')# 修改对象a中的列表['a', 'b']
print('修改后的原始列表 =', a)
print('赋值 =', b)
print('浅拷贝 =', c)
print('深拷贝 =', d)原始列表 = ]
修改后的原始列表 =, 5]
赋值 =, 5]
浅拷贝 =]
深拷贝 =
PS: 这两个函数的具体用处其实我也不太清楚, 平时多做积累, 需要用的时候肯定会派上用场的^_^
来自:鱼C论坛 iPhone客户端
感觉python中很多原理想要吃透的话还是要学好C啊 有谁能把常用板块调出来说说 看一下 好好学习一下 运行结果copy不是也将列表中的列表拷贝了吗? 为啥浅拷贝会丢掉最后一个值?不是说不能复制列表内的列表么?那不应该是5可以进去,但是c不行吗? 这是一个好东西,我收藏了,b就是在a的列表上多贴了一个b的标签,所以修改a就等于修改b,修改b等于修改a;浅拷贝就是在就是保证第一层的数据被复制给新对象,而第一层中的列表中也就是第二层数据只是赋值标签,所以当修改a中的二层数据后,c中的第二层列表也跟着被修改了,因为c中的第二层列表只是一个label 看上去深拷贝好像是对列表包括里面的数据都是重新创建,浅拷贝只是重新创建列表,里面的数据还是贴的标签过去的 {:5_95:} 谢谢
页:
[1]