鱼C论坛

 找回密码
 立即注册
查看: 521|回复: 2

[已解决]小白请教列表的一些问题

[复制链接]
发表于 2018-7-23 20:01:23 | 显示全部楼层 |阅读模式

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

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

x
刚看完11讲和12讲的课后作业,没搞明白列表赋值的问题:
list1 = [1, 3, 2, 9, 7, 8]

list2 = list1[:]

list2

[1, 3, 2, 9, 7, 8]

list3 = list1

list3

[1, 3, 2, 9, 7, 8]

随后list1.sort() 后 list3就跟着变了。
第12讲里  
我对list1 进行重新赋值列表
为什么list3 不会跟着变呢???


不是说好的list3墙头草 跟着变吗?

list2是赋值出一个新的列表,


为什么????
最佳答案
2018-7-23 20:42:48
本帖最后由 凌九霄 于 2018-7-23 20:44 编辑

你可以append、remove,sort,list1,list3都跟着玩,但只要对任何一个进行赋值操作,那就互不干涉了。绝大多数情况下赋值操作会产生新的对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-23 20:42:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-7-23 20:44 编辑

你可以append、remove,sort,list1,list3都跟着玩,但只要对任何一个进行赋值操作,那就互不干涉了。绝大多数情况下赋值操作会产生新的对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-23 20:45:28 | 显示全部楼层
list2 = list1[:] 表示拷贝一个列表,因为Python列表访问的规则比较复杂:
list[n] 表示访问第n项(n从零开始)
list[n:m] 表示访问第n项~第m项之间的数据,假如n或者m是负数表示倒数第n或m项。然而访问到的结果依然是列表。
list[n:] 表示访问第n项之后的所有项目(假如n或者m是负数表示倒数第n或m项)然而访问到的结果依然是列表。
list[:m] 表示访问第m项之前的所有项目(假如n或者m是负数表示倒数第n或m项)然而访问到的结果依然是列表。
list[:] 表示访问所有项
回到正题。
假如list2 = list1的话list2和list1是同一个对象(对象赋值??总之就像c/c++的指针一样)
假如list3 = list1[:]的话表示list3 = list1的整一个列表,而不是对象。
为什么会是对象?因为你没有正确访问它。(可以这样说吗?毕竟函数也差不多是这样)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 07:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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