鱼C论坛

 找回密码
 立即注册
查看: 2570|回复: 2

[已解决]关于变量赋值

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

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

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

x
>>> list1 = [3,4,2,1]
>>> list2 = list1[:]
>>> list3 = list1
>>> list2
[3, 4, 2, 1]
>>> list3
[3, 4, 2, 1]
>>> list1.sort()
>>> list2
[3, 4, 2, 1]
>>> list3
[1, 2, 3, 4]
>>> list1 = [0]
>>> print(list1)
[0]
>>> list2
[3, 4, 2, 1]
>>> list3
[1, 2, 3, 4]
请问为啥改变list1的顺序后 赋值给的list3会跟着改变 但是改变list1的内容以后 list3就不跟着变了呢 为啥啊不是说变量只是一个名字吗list1的都变成【0】了 按理说list3也会变啊
最佳答案
2018-4-16 22:17:24
Python中变量名只是标签而已,一个内存块可以由多个标签指向它,当你修改内存块的内容,比如列表的sort函数或者append等操作时,所有标签的结果都会跟着变
但是你用赋值操作将某一个变量名指向另一块内存,那么它和原来的数据块再无瓜葛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-16 22:17:24 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
Python中变量名只是标签而已,一个内存块可以由多个标签指向它,当你修改内存块的内容,比如列表的sort函数或者append等操作时,所有标签的结果都会跟着变
但是你用赋值操作将某一个变量名指向另一块内存,那么它和原来的数据块再无瓜葛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-16 22:27:16 | 显示全部楼层
楼上说的对,list1 和list3  变量名都指向[3,4,2,1]所在的地址空间,对它执行sort()操作时list1 和list3还是指向那里,当给list赋值时list1指向了[0]所在的地址空间,但list3还是不变还是指向[3,4,2,1],不过它的值变了,但他是在再原来的地址上变,list3不管它什么变,我只要指向你,你是什么我的值就是什么(新手的理解,不对请指教)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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