鱼C论坛

 找回密码
 立即注册
查看: 546|回复: 4

python第十二课的课后题

[复制链接]
发表于 2018-10-9 16:08:06 | 显示全部楼层 |阅读模式

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

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

x
python第十二课的课后题的第一题答案为什么是【1,2,3,4,5],而不是[6]呀
old = [1,2,3,4,5]
new = old
old = [6]
print(new)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-9 16:12:05 | 显示全部楼层
了解一下python内存机制。 在内存里建了一个list为[1,2,3,4,5]然后把old变量指向这个list, new又通过old指向了这个list。 然后old又被指向了【6】这个list,new还是继续指向【1,2,3,4,5】。所以结果是[1,2,3,4,5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-9 22:47:04 From FishC Mobile | 显示全部楼层
第一个列表定义了两个名字,后来old变成另一个列表的名字了,但是new还是第一个列表的名字,所以输出第一个列表?


呜…刚看到这,我是这样理解…不知道可不可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-10 02:26:28 | 显示全部楼层
你学过c的话,就会知道不管old还是new都是指向[1,2,3,4,5]的一个指针地址(虽然不够严谨,我也初学)。这个指针的名字叫做old后来给了new,然后又让old指向了一个叫[6]的位置,现在的old存放的是[6]的内存地址。而new依然存放的是[1,2,3,4,5]也就是原来old指向的地址。new没有地址改变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-10 07:50:23 | 显示全部楼层
你要这样理解:

按照上一讲,当 new 等于 old ,这时候,[1,2,3,4,5] 这个列表有2个标签,一个是 old, 另一个是 new; 也就是 2个变量同时指向一个列表。这个时候对old 列表内部作任何处理,也就是对new 的处理。
问题来了,当 old =[6], 这时候机器认为: 删掉原来 列表[1,2,3,4,5] 给予的 old 的名字,重新赋予 一个新的 列表=[6]给了 old这个变量;
而 new 的 赋值 还是 原来的列表[1,2,3,4,5]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 09:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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