鱼C论坛

 找回密码
 立即注册
查看: 2310|回复: 7

两种方法修改列表结果不一致?

[复制链接]
发表于 2015-3-1 14:51:46 | 显示全部楼层 |阅读模式

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

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

x
BaiduShurufa_2015-3-1_14-43-1.png BaiduShurufa_2015-3-1_14-40-33.png

这两种修改,最后得到的列表new 都是一样的,而且 old = new   ,为什么最后得到的 old 列表会不一样呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-1 16:34:44 | 显示全部楼层
如果new直接等于一个列表的话, 内存中new就和old不是同一个值, 也就不会影响old

如果用new的方法的话, 系统会改变new在内存中的值, 因为old和new在内存中是一个值, 所以old也会跟着改变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-2 00:18:58 | 显示全部楼层
old = new并不产生一个新的列表对象,只是有一个新变量old,new和old都指向[6,5,4,3,2,1],对任意变量的操作实际上都是对这个列表的操作。而new = [7,6,5,4,3,2,1]会产生一个新的列表对象,然后让new指向这个列表对象,这时new和old就不是指向同一个对象了。
可以用id(new)和id(old),看一下是否是一个对象。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-3 15:24:16 | 显示全部楼层
第二个, new重新赋值了, 所以不一样
a = 5
b = a
a = 6
这时, 你还认为a与b相等吗??????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-3 15:39:26 | 显示全部楼层
old不会跟着变哒
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-9 15:29:59 | 显示全部楼层
已经把new绑定到另外一个列表了,可以看成一个新的对象,如果用new == old 检查你会发现shell返回False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-12 13:40:09 | 显示全部楼层
Unnamed QQ Screenshot20150312133537.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-12 15:52:37 | 显示全部楼层
原来如此 一个改变原始内存值 一个重新生成:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-15 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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