鱼C论坛

 找回密码
 立即注册
查看: 4984|回复: 6

[已解决]12讲列表第0题

[复制链接]
发表于 2017-6-9 16:45:42 | 显示全部楼层 |阅读模式

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

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

x
题目如下:
old = [1,2,3,4,5]
new = old
old = [6]
print(new)
为什么不是6而是[1,2,3,4,5]?

按照11讲的答案来讲:
list1 =[1,3,2,9,7,8]
list2 = list1[:]
list3 = list1
list1.sort()
list2 = [1,3,2,9,7,8]
list3 = [1,2,3,7,8,9]

new不应该跟随old变化吗?
最佳答案
2017-6-9 21:27:24
我说一下吧!!!

new,old都是变量名。但是python里很少有人提变量名这个概念,一般都说是名字。这是因为一个数据可以有多个变量名,就像人可以有几个名字一样。

old = [1,2,3,4,5]表面上是将[1,2,3,4,5]赋值给old,其实是给[1,2,3,4,5]起了叫old名字。就像给刚出生的孩子起了个名字,他才有了户口。
new = old就是给old所属的数据又起了个别名。就像给刚出生的孩子起了个名字后,又起了个小名。print(new)就会出现[1,2,3,4,5]
old = [6],这里要注意两点。首先,我们可以直接用=重新定义变量名背后的数据。但是=不能改变原有的数据(只要这个数据还有名字。一旦没有了名字,系统就不会承认这个数据,会将其回收。就像人没有了名字,就无法精确定义这个人。)其次,在一个作用域内一个变量名只能对应一个数据。
虽然old这个名字已经不再是属于[1,2,3,4,5],但[1,2,3,4,5]还有个别名,所以这个数据还被保留。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-9 16:58:39 | 显示全部楼层
本帖最后由 李金龙 于 2017-6-9 17:04 编辑

http://bbs.fishc.com/forum.php?m ... 742&page=1#pid11009  先看这个
  1. old = [1,2,3,4,5]
  2. new = old  # [1,2,3,4,5]
  3. old = [6]  # 难道还要劳资再往上面怕?程序都是向下执行的
  4. print(new)
复制代码

  1. list1 =[1,3,2,9,7,8]
  2. list2 = list1[:]  # 拷贝list1的结果 [1,3,2,9,7,8]
  3. list3 = list1  # 赋值list1的结果 [1,3,2,9,7,8]
  4. list1.sort()
  5. list2 = [1,3,2,9,7,8]
  6. list3 = [1,2,3,7,8,9]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2017-6-9 18:11:00 From FishC Mobile | 显示全部楼层
old =[6]是将old指向一个新的列表,new仍然指向[1,2,3,4,5]那个列表,而list1.sort()是将list1本身进行排序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-9 21:27:24 | 显示全部楼层    本楼为最佳答案   
我说一下吧!!!

new,old都是变量名。但是python里很少有人提变量名这个概念,一般都说是名字。这是因为一个数据可以有多个变量名,就像人可以有几个名字一样。

old = [1,2,3,4,5]表面上是将[1,2,3,4,5]赋值给old,其实是给[1,2,3,4,5]起了叫old名字。就像给刚出生的孩子起了个名字,他才有了户口。
new = old就是给old所属的数据又起了个别名。就像给刚出生的孩子起了个名字后,又起了个小名。print(new)就会出现[1,2,3,4,5]
old = [6],这里要注意两点。首先,我们可以直接用=重新定义变量名背后的数据。但是=不能改变原有的数据(只要这个数据还有名字。一旦没有了名字,系统就不会承认这个数据,会将其回收。就像人没有了名字,就无法精确定义这个人。)其次,在一个作用域内一个变量名只能对应一个数据。
虽然old这个名字已经不再是属于[1,2,3,4,5],但[1,2,3,4,5]还有个别名,所以这个数据还被保留。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-9 21:33:28 | 显示全部楼层
李金龙 发表于 2017-6-9 16:58
http://bbs.fishc.com/forum.php?m ... 742&page=1#pid11009  先看这个

你的建议很好!你解题举的例子也很好!但是新人肯定很难理解什么是分片什么是赋值。因为他不懂得应该是名字是怎么一回事。其实你要是愿意多做分析,应该能给予更多帮助。这是我个人的看法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-9 22:05:12 | 显示全部楼层
Messj 发表于 2017-6-9 21:33
你的建议很好!你解题举的例子也很好!但是新人肯定很难理解什么是分片什么是赋值。因为他不懂得应该是名 ...

看了半天,我以为你是提问的人,没想到是回复的人。

可能每个人的回答思路是不一样的,上面的那个内容视频中很详细的讲过,所以有个问题,就是对视频的理解多少。

现在我的习惯是,让别人给到我一些关键词下来,我去百度或谷歌大量的去查找内容,并做好笔记,所以就变成我给出的回答,也会很简单。

如果一步一步教着做,对不起,你不适合编程,因为bug遇到的数量,远比你学习要解决的问题的多很多,且难很多,所以可以求助,但不能停留在求助,要能根据答案,找出你所接受的结果。

最后感谢你的建议。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
Messj + 1 + 1 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-6-9 22:09:59 | 显示全部楼层
李金龙 发表于 2017-6-9 22:05
看了半天,我以为你是提问的人,没想到是回复的人。

可能每个人的回答思路是不一样的,上面的那个内容 ...

嗯,没事。个人小意见,其实很多人的问题都很简单,但有些就很有趣。仔细想想背后的原理感觉是不错的体验
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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