鱼C论坛

 找回密码
 立即注册
查看: 878|回复: 10

[已解决]新人小白求助Python12讲的第一题

[复制链接]
发表于 2020-4-18 02:42:35 | 显示全部楼层 |阅读模式

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

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

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



为啥打印的不是[6]
最佳答案
2020-4-18 03:34:12
<font color="red">[已解决]</font>第012讲第0题
https://fishc.com.cn/thread-165139-1-1.html
(出处: 鱼C论坛)

<font color="red">[已解决]</font>求助python012讲一个关于列表的问题
https://fishc.com.cn/thread-158299-1-1.html
(出处: 鱼C论坛)

012python视频课后作业求教
https://fishc.com.cn/thread-162015-1-1.html
(出处: 鱼C论坛)

<font color="red">[已解决]</font>第012讲0.的问题
https://fishc.com.cn/thread-129650-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-18 03:31:00 | 显示全部楼层
本帖最后由 Judie 于 2020-4-17 14:35 编辑

old = [1, 2, 3, 4, 5]  #  [1, 2, 3, 4, 5] 上有个标签 old
new = old # new这个标签也贴在了 [1, 2, 3, 4, 5]上
old = [6] # # 把old便签贴在了 [6] 上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-18 03:32:42 | 显示全部楼层
>>> old = [1, 2, 3, 4, 5]
>>> new = old                        #new==[1,2,3,4,5]
>>> old = [6]                        #old==[6]
>>> print(new)                        #打印new,new==[1,2,3,4,5]
>>> print(old)                        #打印old,old==[6]

重点解释一下,new=old应该理解为new变量指向了[1,2,3,4,5]这个常量,而不是new变量指向old变量
old=[6]应该理解为old变量不再指向[1,2,3,4,5],而指向了[6]这个常量
显然new仍然指向了[1,2,3,4,5]从来没有变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 03:34:12 | 显示全部楼层    本楼为最佳答案   
<font color="red">[已解决]</font>第012讲第0题
https://fishc.com.cn/thread-165139-1-1.html
(出处: 鱼C论坛)

<font color="red">[已解决]</font>求助python012讲一个关于列表的问题
https://fishc.com.cn/thread-158299-1-1.html
(出处: 鱼C论坛)

012python视频课后作业求教
https://fishc.com.cn/thread-162015-1-1.html
(出处: 鱼C论坛)

<font color="red">[已解决]</font>第012讲0.的问题
https://fishc.com.cn/thread-129650-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 04:56:36 | 显示全部楼层
Judie 发表于 2020-4-18 03:34
[已解决]第012讲第0题
https://fishc.com.cn/thread-165139-1-1.html
(出处: 鱼C论坛)

经典问题

变量和内存地址的引用问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 05:37:03 | 显示全部楼层
XiaoPaiShen 发表于 2020-4-17 15:56
经典问题

变量和内存地址的引用问题

哈哈哈哈 可不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 06:54:48 | 显示全部楼层
可以这样理解:首先,[1, 2, 3, 4, 5]这个列表先被贴上old标签,然后再贴上new标签,这个时候,把old撕下来,贴到[6]上,所以new不会变
应该不难理解吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 08:32:24 | 显示全部楼层
麻麦皮 发表于 2020-4-18 03:32
>>> old = [1, 2, 3, 4, 5]
>>> new = old                        #new==[1,2,3,4,5]
>>> old = [6]                        #old==[6]

正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 09:21:43 | 显示全部楼层
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 09:37:27 | 显示全部楼层
大概是酱紫的

>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old.insert()

这样有可能new就会改变

但是你那样子就相当于 你把 old 删掉,然后又来一个 同名的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 10:02:20 | 显示全部楼层
old = [1,2,3,4,5]
print(id(old))
new = old
print(id(new))
old = [6]
print(id(old))
print(new)

4466494984 数据没有改变之前的old 地址
4466494984 new的地址
4466744584 当指向的值变了,地址也变了
[1, 2, 3, 4, 5]

看楼上的介绍,,是用tag来解释啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 14:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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