为了账号安全,请及时绑定邮箱和手机立即绑定

搞不清本节的逻辑

为什么是这个结果?这个程序只是对变量L进行了操作,并没有对 t 或 t[2] 操作啊!为什么结果还会改变变量t?!搞不清这什么逻辑!

http://img1.sycdn.imooc.com//579849720001807302650134.jpg


正在回答

5 回答

就像是公司定义的部门是固定不变的 但是内部人员是流动的 当然真个比喻不完全正确 还涉及到list本身内部可变这一重要概念

1 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5799aadc0001b92303630297.jpg5799aab80001dc5203580287.jpg

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

0 回复 有任何疑惑可以回复我~

因为L=t[2],在这里t[2]即表示['A’,'B'],修改前L[0]='A',L[1]='B',重新赋值后t[2]变为['X','Y']

0 回复 有任何疑惑可以回复我~
#1

斯蒂芬大夫 提问者

重新赋值L 等于重新赋值t[2] ?!
2016-07-27 回复 有任何疑惑可以回复我~
#2

qq_柠檬墨汁_03731878 回复 斯蒂芬大夫 提问者

是的,因为L=t(2)
2016-07-28 回复 有任何疑惑可以回复我~
#3

qq_柠檬墨汁_03731878 回复 斯蒂芬大夫 提问者

可以理解为t(2)始终指向L,L变了,t(2)自然就变了
2016-07-28 回复 有任何疑惑可以回复我~

突然觉得楼主说的好有道理

1 回复 有任何疑惑可以回复我~
#1

斯蒂芬大夫 提问者

一起想办法把这个疑惑解开吧
2016-07-27 回复 有任何疑惑可以回复我~
#2

nemo_wang3687936 回复 斯蒂芬大夫 提问者

问了同事,据说取出来的是指针,不仅是值。
2016-07-27 回复 有任何疑惑可以回复我~
#3

nemo_wang3687936 回复 斯蒂芬大夫 提问者

http://www.jb51.net/article/47986.htm
2016-07-27 回复 有任何疑惑可以回复我~
#4

斯蒂芬大夫 提问者 回复 nemo_wang3687936

这里面好像没有讲这个问题吧
2016-07-27 回复 有任何疑惑可以回复我~
#5

nemo_wang3687936 回复 斯蒂芬大夫 提问者

不是有个图嘛,说的这个问题。L=t[2]这里取出来的不是值,是指针……
2016-07-28 回复 有任何疑惑可以回复我~
#6

斯蒂芬大夫 提问者 回复 nemo_wang3687936

哪里有?截个图看看
2016-07-28 回复 有任何疑惑可以回复我~
查看4条回复

L=t[2]  修改L 就把t[2]的改了

0 回复 有任何疑惑可以回复我~
#1

斯蒂芬大夫 提问者

修改L 那只是L 被重新赋值而已,怎么就改变t[2] 了?!
2016-07-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758356    人
  • 解答问题       8967    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

搞不清本节的逻辑

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号