鱼C论坛

 找回密码
 立即注册
查看: 1132|回复: 6

列表

[复制链接]
发表于 2021-11-30 12:12:01 | 显示全部楼层 |阅读模式

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

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

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


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

为什么第一段代码的new 的值不是最后old的值
而第二段的new 又是改变之后old的值
求解答,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-30 12:26:33 | 显示全部楼层
变量只是一个名字,他可以指向任何实体,当你使用=时,实际上是在改变变量的指向;而你对变量调用方法时,实际上是对变量指向的实体调用了该方法。
第一段代码发生的情况如下
代码1.jpg

第二段代码的情况,你先自己思考一下,对应着我上面说的对变量调用方法的情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-11-30 12:50:49 | 显示全部楼层
本帖最后由 luck78 于 2021-11-30 12:54 编辑

>>> old = [1,2,3,4,5]
>>> new = old
>>> id(old)
2832595354432
>>> id(new)
2832595354432
在old 没有改变之前, old 和new共同一个id号,就像 一个瓶子 同时贴了old 和 new 这两个标签
>>> old = [6]
>>> id(old)
2832595358976
>>> id(new)
2832595354432
old进行了内容修改,它的id值也发生了改变但new没改,就像重新拿了新的一个瓶子装了另一个东西,然后新瓶子标签贴了old,但是原来那个贴着new标签的瓶子还在,装着原来的内容。

old.reverse()
这里再查old和new的id值 都是一样的, 就像将一个贴着old 和new标签的瓶子颠倒了一下,瓶子里的内容并没有发时改变只是顺序改变了,所以old 和new的内容是一样的。

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

使用道具 举报

 楼主| 发表于 2021-11-30 13:53:25 | 显示全部楼层
lightninng 发表于 2021-11-30 12:26
变量只是一个名字,他可以指向任何实体,当你使用=时,实际上是在改变变量的指向;而你对变量调用方法时, ...

谢谢老哥再次给我解答,大概懂了,意思是对变量调用方法时直接改变了[1,2,3,4,5]的值,所以都代表这个列表的new和old 也都改变了对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-30 13:56:18 | 显示全部楼层
luck78 发表于 2021-11-30 12:50
>>> old = [1,2,3,4,5]
>>> new = old
>>> id(old)

感谢老哥的回答,老哥用id的方法来解答同时解决了我对new = old  与new = old[:]有何不同的疑惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-30 15:01:48 | 显示全部楼层
Jay8 发表于 2021-11-30 13:53
谢谢老哥再次给我解答,大概懂了,意思是对变量调用方法时直接改变了[1,2,3,4,5]的值,所以都代表这个列 ...

是这样的,=作为赋值用的运算符,其实是改变了变量的指向的,和这个相关的一个有意思的知识点叫做深拷贝和浅拷贝,也是很值得学习的一个东西,楼主可以自行百度学习一下~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-30 15:55:40 From FishC Mobile | 显示全部楼层
lightninng 发表于 2021-11-30 15:01
是这样的,=作为赋值用的运算符,其实是改变了变量的指向的,和这个相关的一个有意思的知识点叫做深拷贝 ...

好的,非常感谢你的解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-7 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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