鱼C论坛

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

new=old, old变化了,new为什么不跟着变化呢

[复制链接]
发表于 2017-7-3 11:40:57 | 显示全部楼层 |阅读模式

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

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

x
>>> old=[1,2,3,4,5]
>>> new=old
>>> od=[6]
>>> print(new)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-3 12:01:44 | 显示全部楼层
我们可以这样理解存储方式:内存好比一座大楼,变量是门牌号

一开始 我们给这座大楼开了一间房间存储[1,2,3,4,5],门牌号叫old,然后再给他命名一个门牌号new

然后你再开一个房间存储[6],给它个门牌号old,由于old门牌号上面已经命名了,上面那存[1,2,3,4,5]的房

间,old标签就被撕掉了,贴在那存[6]的房间门上了,原来那间存[1,2,3,4,5]的房间,还有个门牌号new。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-7-3 13:06:11 | 显示全部楼层
因为你的变量名错了呀 old才对
正经的 直接给old 赋值一个新的列表 new是不会跟着变的
但是 你改变old的列表 new就跟着变了 比如 old[0] = 3一下
list.jpg
list2.jpg
这个网站可以可视化这个过程
http://pythontutor.com/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 21:36:19 | 显示全部楼层
new=old
证明new的指针指向old,old指向了另一个值,而new还是指着原来old指着的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 10:26:45 | 显示全部楼层
ButcherRabbit 发表于 2017-7-3 12:01
我们可以这样理解存储方式:内存好比一座大楼,变量是门牌号

一开始 我们给这座大楼开了一间房间存储[1, ...

你说的很容易让人理解,非常感谢,让我对py的理解加深了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 10:54:54 | 显示全部楼层
sky 发表于 2017-7-3 13:06
因为你的变量名错了呀 old才对
正经的 直接给old 赋值一个新的列表 new是不会跟着变 ...

感谢,看完似乎明白了。 # 头像太容易分散注意力!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-22 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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