鱼C论坛

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

[已解决]关于“零基础入门学习Python”第十一、十二讲的课后作业问题

[复制链接]
发表于 2016-5-24 19:54:35 | 显示全部楼层 |阅读模式

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

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

x
我看了答案还是不明白这是为什么
如下
  1. >>> list1 = [1, 3, 2, 9, 7, 8]
  2. >>> list3 = list1
  3. >>> list1.sort()
  4. >>> list3
  5. [1, 2, 3, 7, 8, 9]
复制代码

---------------------------------------
  1. >>> old = [1, 2, 3, 4, 5]
  2. >>> new = old
  3. >>> old = [6]
  4. >>> print(new)
  5. [1, 2, 3, 4, 5]
复制代码



上面那个代码list3会被改变,我是听懂了,但是为什么下面那个new能保持不变我没看懂啊。

两个代码无非一个是"list1.sort()",一个是“old = [6]”这有很大区别吗
最佳答案
2016-5-24 21:17:24
先说第一个程序:
list1= [1, 3, 2, 9, 7, 8],在内存中开辟一个空间,假设地址为0001,
list3 = list1 是一个贴“标签”问题,给list3贴上了list1这个标签,即[1, 3, 2, 9, 7, 8],list3的地址其实和list1是相同的,也是0001.
list1.sort()  对list1进行从小到大排序,虽然值改变了,但是地址还是0001,而此时的list3的地址也没有变,所以就是下面运行的结果
>>> list3
[1, 2, 3, 7, 8, 9]

你也可以用id(list1)
id(list3)看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-24 21:17:24 | 显示全部楼层    本楼为最佳答案   
先说第一个程序:
list1= [1, 3, 2, 9, 7, 8],在内存中开辟一个空间,假设地址为0001,
list3 = list1 是一个贴“标签”问题,给list3贴上了list1这个标签,即[1, 3, 2, 9, 7, 8],list3的地址其实和list1是相同的,也是0001.
list1.sort()  对list1进行从小到大排序,虽然值改变了,但是地址还是0001,而此时的list3的地址也没有变,所以就是下面运行的结果
>>> list3
[1, 2, 3, 7, 8, 9]

你也可以用id(list1)
id(list3)看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-5-24 21:19:27 | 显示全部楼层
对于第二段程序:
>>> old = [1, 2, 3, 4, 5]-->假设这里old的地址为0010
>>> new = old--->同上面的解答,new的地址也是0010
>>> old = [6]  --->old给赋了新的值,所old的地址发生了改变,假设此时old的地址是0020
但是new的地址仍然是0010,所以会打印如下的结果
>>> print(new)
[1, 2, 3, 4, 5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-5-25 15:31:00 | 显示全部楼层
celestewang 发表于 2016-5-24 21:19
对于第二段程序:
>>> old = [1, 2, 3, 4, 5]-->假设这里old的地址为0010
>>> new = old--->同上面的解答 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 11:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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