鱼C论坛

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

012python视频课后作业求教

[复制链接]
发表于 2020-3-23 22:50:52 | 显示全部楼层 |阅读模式

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

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

x
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)

这个题目的答案是会打印:[1, 2, 3, 4, 5]
请问是为什么呀? 不应该是打印6吗?
好像会跟着变吧?因为是new = old这个形式,而不是new=old[:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 23:07:38 | 显示全部楼层
本帖最后由 sunrise085 于 2020-3-23 23:08 编辑

python定义变量就是贴标签,给该变量就是把标签撕下来贴到另一个上面去。
看图:
2.jpg

可以看看我总结的一个帖子:python细节之2、变量名与标签 变量的赋值与修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-23 23:08:37 | 显示全部楼层
应该是因为old=[6]这个语句意思是old赋予了一个新的数列,并没有影响到 [1, 2, 3, 4, 5]这个原数列,所以new没有变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 23:11:43 | 显示全部楼层
>>> old = [1, 2, 3, 4, 5]      # old 指向列表 [1, 2, 3, 4, 5]
>>> new = old                  # new 与 old 一起指向列表 [1, 2, 3, 4, 5]
>>> old = [6]                  # old 指向列表 [6],从此,old 与 new 分道扬镳
>>> print(new)                 # new 依然指向列表 [1, 2, 3, 4, 5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 23:12:09 | 显示全部楼层
用老师的说法来形容吧
old = [1, 2, 3, 4, 5]  #  [1, 2, 3, 4, 5] 上有个标签 old
new = old # new这个标签也贴在了 [1, 2, 3, 4, 5]上
old = [6] # # 把old便签贴在了 [6] 上

如果还不懂你把 [1, 2, 3, 4, 5] 看成苹果 , [6] 看成橘子。最后你看标签在哪就对了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-25 09:45:24 | 显示全部楼层
new是在old重新赋值之前被赋值的,所以在new = old之后,old再重新赋值,对之前的new不会发生影响
如果按你说的打印new也是[6],那么你就要在old=[6]之后,再写一遍new=old
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 13:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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