鱼C论坛

 找回密码
 立即注册

list2 = list1[:],与 list2 = list1 区别

已有 893 次阅读2016-6-21 22:21

课堂上小甲鱼说可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?
  
千万不可以!
  
好的,为了大家都可以弄明白这个【必须理解】的概念,我啰嗦一下:
  
上节课我们提到使用分片创建列表的拷贝,例如:
  1. >>> list1 = [1, 3, 2, 9, 7, 8]
  2. >>> list2 = list1[:]
  3. >>> list2
  4. [1, 3, 2, 9, 7, 8]
  5. >>> list3 = list1
  6. >>> list3
  7. [1, 3, 2, 9, 7, 8]
复制代码

看上去貌似一样的,对吧?但事实上呢?我们利用列表的一个小伙伴做下修改,大家看一下差别:
  1. >>> list1.sort()
  2. >>> list1
  3. [1, 2, 3, 7, 8, 9]
复制代码

看到吧,我们的list1已经从小到大排了个序,那list2和list3呢?
  1. >>> list2
  2. [1, 3, 2, 9, 7, 8]
复制代码

可以看到我们使用分片的方式得到的list2很有原则、很有格调,并不会因为list1的改变而改变,这个原理我待会儿跟大家说,我们接着看下list3:
  1. >>> list3
  2. [1, 2, 3, 7, 8, 9]
复制代码

大家可以看到了,真正的汉奸、墙头草是list3,Ta跟着list1改变了,这是为什么呢?
  
不知道大家还记不记得我们在讲解变量的时候说过,Python的变量就像一个标签,就一个名字而已,贴哪是哪,指哪打哪,呃,我还是给大家伙画个图好。
  
 
  
这下大家应该明白了吧,在为一个固定的东西指定另一个名字的做法,只是向同一个东西增加一个新的标签而已

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

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

GMT+8, 2024-5-11 23:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部