|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
做完零基础学习python第011讲和第012讲的课后习题之后,有一个问题我仍然很困惑。举个例子:
list1 = [1,2,3,5,4]
list3 = list1
list1.sort()
和
list1 = [1,2,3,5,4]
list3 = list1
list1 = [2,2,4]
比较的话,第一个情况中输出的是 list3=[1,2,3,4,5]按顺序排列,而第二个情况中,输出的是list3=[1,2,3,5,4]即原来的list1
我的理解是这样子的,望高人帮忙指正一下:
根据小甲鱼课后题的讲解,情况1应该是list1和list3两个标签贴在了[1,2,3,5,4]这一个列表上,而list1.sor1()是对这一列表进行排序整理,所以本质上被贴标签的这个列表自身发生了变化,而标签(list1和list3)还在它身上;
而情况2则可以理解为将list1这个标签撕起来,贴到了另外一个物体(列表)上,而list3还是贴在了原来[1,2,3,5,4]这个物体(列表)上。
不知道我这样的理解是不是小甲鱼视频中想表达的意思?望高手指教
python中变量名只是标签而已,可以多个标签指向同一块内存
list3 = list1
意味着list1和list3这两个标签指向了同一块内存
所以你对list1和list3指向的数据进行改动,比如列表的pop,sort,reverse等操作都会对两者同时产生作用,因为他们修改了内存中的数据
而你将list1重新赋值,意味着list1标签指向另外一块内存,从此list1和list3再无瓜葛
|
|