鱼C论坛

 找回密码
 立即注册
查看: 811|回复: 3

零基础011讲课后问题

[复制链接]
发表于 2019-1-5 11:00:18 | 显示全部楼层 |阅读模式

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

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

x
第五题
  1. list1 = [1, 3, 2, 9, 7, 8]
  2. list3 = list1
  3. list1.sort()
  4. print(list3)
复制代码

打印会得到[1, 2, 3, 7, 8, 9]
这里list3会跟着list1变化,小甲鱼说是因为在为一个固定的东西指定另一个名字的做法,只是向同一个东西增加一个新的标签而已。
那为什么
  1. a=2
  2. b=a
  3. a=a-1
  4. print(b)
复制代码

打印得到的结果却是2而不是1
请问为什么这里的b不会跟着变a变,但上面的list3却跟着list1变了?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-5 13:49:41 | 显示全部楼层
因为a=a-1是给字符串重新赋值了 而list1是使用sort()方法进行内部变化
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-5 13:52:07 | 显示全部楼层
列表的标签list1, list3会储存在堆内存里(虽然里面的常量元素会在栈内存里),常量 1 ,2 会储存在栈内存里。如果先写了 list3=list1, 再给list1或者list3 赋值其他的元素(可以是相同的元素)而不是调用list里的方法,两个列表就解绑了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-5 14:19:40 From FishC Mobile | 显示全部楼层
a=a-1是你已经给a重新赋值,相当于你在第一个例子中list1=list1.sort(),这样,你得到的list1和list3是不同的结果,你可以自己试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 21:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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