鱼C论坛

 找回密码
 立即注册
查看: 1972|回复: 5

[已解决]关于列表copy的一些问题

[复制链接]
发表于 2019-4-15 17:36:26 | 显示全部楼层 |阅读模式

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

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

x
1555320847(1).png
如图,为什么利用copy方法之后,对于列表1的修改,列表2也同步修改了,但是对列表1清空之后,列表2反而没有清空呢?
最佳答案
2019-4-15 19:35:28
你这个涉及到的是python的可变数据与不可变数据的深拷贝浅拷贝的问题。这个链接讲得会非常详细。
https://my.oschina.net/leejun2005/blog/145911
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-15 17:43:25 | 显示全部楼层
你 修改 list1 ,并不是重新赋值,所以改变的是 原 list1,继而 list2 会跟着变化
而你 清空 list1,相当于 重新赋值 一样,
list2 不会变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-15 17:50:49 | 显示全部楼层
copy是浅拷贝,它只保证一级元素的独立的,而二级以上的元素的同步变化的。如果要完全独立需要深拷贝。
>>> lst1=[1, 2]
>>> lst2 = lst1.copy()
>>> lst1[1] = 3
>>> lst1
[1, 3]
>>> lst2
[1, 2]
>>> lst3 = [1, [2, 3]]
>>> lst4 = lst3.copy()
>>> lst3[1][0] = 5
>>> lst3
[1, [5, 3]]
>>> lst4
[1, [5, 3]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-15 18:31:05 | 显示全部楼层
冬雪雪冬 发表于 2019-4-15 17:50
copy是浅拷贝,它只保证一级元素的独立的,而二级以上的元素的同步变化的。如果要完全独立需要深拷贝。

可以说具体一些吗?什么叫一级元素独立而二级元素同步变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-15 19:08:44 | 显示全部楼层
907950270 发表于 2019-4-15 18:31
可以说具体一些吗?什么叫一级元素独立而二级元素同步变化

就是一维列表的元素和多维列表内部的元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-15 19:35:28 | 显示全部楼层    本楼为最佳答案   
你这个涉及到的是python的可变数据与不可变数据的深拷贝浅拷贝的问题。这个链接讲得会非常详细。
https://my.oschina.net/leejun2005/blog/145911
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 08:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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