鱼C论坛

 找回密码
 立即注册
查看: 1198|回复: 2

[已解决]两个有关拷贝的题,是我搞错了吗,小甲鱼的课后xi

[复制链接]
发表于 2022-3-27 14:14:58 | 显示全部楼层 |阅读模式

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

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

x
  1. list1 = [1, 2]
  2. list2 = [3, 4]

  3. dict1 = {'1':list1, '2':list2}
  4. dict2 = dict1.copy()

  5. dict1['1'][0] = 5

  6. result = dict1['1'][0] + dict2['1'][0]
  7. print(result)
复制代码

这个是浅拷贝吧,那为什么答案不是6却是10呢?

  1. import copy

  2. list1 = [1, 2]
  3. list2 = [3, 4]

  4. dict1 = {'1':list1, '2':list2}
  5. dict2 = copy.deepcopy(dict1)

  6. dict1['1'][0] = 5

  7. result = dict1['1'][0] + dict2['1'][0]
  8. print(result)
复制代码

这个如果是深拷贝的话那这个的答案不应该是10吗?

最佳答案
2022-3-27 15:50:38
明显是你理解反了。

浅拷贝 只拷贝 dict这一层,到了list那里的值它就不拷贝了
dict1 = {'1':list1, '2':list2}。
dict2 = dict1.copy() = {'1':list1, '2':list2}
dict2中list还是保存的引用
它们的list都是指向同一处值list1 = [1, 2] list2 = [3, 4],不管你使用dict1修改list中的值,还是dict2修改list中的值,改的都是同一个位置中的值。


深拷贝  dict和list都拷贝
dict1 = {'1':list1, '2':list2}。 list1 = [1, 2] list2 = [3, 4]
dict2 = copy.deepcopy(dict1) = {'1':[1, 2], '2': [3, 4]}。
dict1,dict2中的list都有各自的值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-27 15:50:38 | 显示全部楼层    本楼为最佳答案   
明显是你理解反了。

浅拷贝 只拷贝 dict这一层,到了list那里的值它就不拷贝了
dict1 = {'1':list1, '2':list2}。
dict2 = dict1.copy() = {'1':list1, '2':list2}
dict2中list还是保存的引用
它们的list都是指向同一处值list1 = [1, 2] list2 = [3, 4],不管你使用dict1修改list中的值,还是dict2修改list中的值,改的都是同一个位置中的值。


深拷贝  dict和list都拷贝
dict1 = {'1':list1, '2':list2}。 list1 = [1, 2] list2 = [3, 4]
dict2 = copy.deepcopy(dict1) = {'1':[1, 2], '2': [3, 4]}。
dict1,dict2中的list都有各自的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-27 15:52:41 | 显示全部楼层
测试看一下值就知道了。
  1. list1 = [1, 2]
  2. list2 = [3, 4]

  3. dict1 = {'1':list1, '2':list2}
  4. dict2 = dict1.copy()

  5. dict1['1'][0] = 5

  6. print(dict1['1'][0])
  7. print(dict2['1'][0])

  8. print()

  9. import copy

  10. list1 = [1, 2]
  11. list2 = [3, 4]

  12. dict1 = {'1':list1, '2':list2}
  13. dict2 = copy.deepcopy(dict1)

  14. dict1['1'][0] = 5
  15. print(dict1['1'][0])
  16. print(dict2['1'][0])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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