鱼C论坛

 找回密码
 立即注册
查看: 6348|回复: 10

[技术交流] <标准库> copy模块

[复制链接]
发表于 2015-3-18 20:55:27 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 戴宇轩 于 2015-3-21 11:24 编辑

这个模块有两个函数, copy和deepcopy:

1. copy.copy (浅拷贝)只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy (深拷贝) 拷贝对象及其子对象。也就是说, 如果列表里还有列表, deepcopy也会将其拷贝, 但是copy做不到这一点

看了上面的解释, 大家可能看得云里雾里, 这里有一个很好的例子:
  1. import copy

  2. a = [1, 2, 3, 4, ['a', 'b']]  #原始列表
  3. print('原始列表 =', a)

  4. b = a  # 把a赋值给b
  5. c = copy.copy(a)  # 浅拷贝a, 等效于a[:]
  6. d = copy.deepcopy(a)  # 深拷贝a

  7. a.append(5)  # 修改对象a
  8. a[4].append('c')  # 修改对象a中的列表['a', 'b']

  9. print('修改后的原始列表 =', a)
  10. print('赋值 =', b)
  11. print('浅拷贝 =', c)
  12. print('深拷贝 =', d)
复制代码
  1. 原始列表 = [1, 2, 3, 4, ['a', 'b']]
  2. 修改后的原始列表 =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
  3. 赋值 =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
  4. 浅拷贝 =  [1, 2, 3, 4, ['a', 'b', 'c']]
  5. 深拷贝 =  [1, 2, 3, 4, ['a', 'b']
复制代码

PS: 这两个函数的具体用处其实我也不太清楚, 平时多做积累, 需要用的时候肯定会派上用场的^_^
来自:鱼C论坛 iPhone客户端

来自: iPhone客户端

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-26 11:54:33 | 显示全部楼层
感觉python中很多原理想要吃透的话还是要学好C啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-6 07:05:38 | 显示全部楼层
有谁能把常用板块调出来说说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-7 02:12:37 | 显示全部楼层
看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-2 17:20:22 | 显示全部楼层
好好学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-6 11:00:24 | 显示全部楼层
运行结果copy不是也将列表中的列表拷贝了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-9 14:30:16 | 显示全部楼层
为啥浅拷贝会丢掉最后一个值?不是说不能复制列表内的列表么?那不应该是5可以进去,但是c不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-9 16:31:08 | 显示全部楼层
这是一个好东西,我收藏了,b就是在a的列表上多贴了一个b的标签,所以修改a就等于修改b,修改b等于修改a;浅拷贝就是在就是保证第一层的数据被复制给新对象,而第一层中的列表中也就是第二层数据只是赋值标签,所以当修改a中的二层数据后,c中的第二层列表也跟着被修改了,因为c中的第二层列表只是一个label
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-16 03:15:49 | 显示全部楼层
看上去深拷贝好像是对列表包括里面的数据都是重新创建,浅拷贝只是重新创建列表,里面的数据还是贴的标签过去的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-16 06:03:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-5 10:41:48 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表