鱼C论坛

 找回密码
 立即注册
查看: 6475|回复: 39

[技术交流] 011讲:列表,一个打了激素的数组2

[复制链接]
发表于 2015-8-29 00:20:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 醉酒青牛 于 2016-5-22 17:19 编辑

本期主要内容导读:
这一期我们归纳一下鱼神第十一讲:列表,一个打了激素的数组2。这一期里面鱼神主要讲了通过索引值获得列表元素方法,删除列表中某一元素的方法及通过列表分片实现获取列表中多个元素的方法。下面我们就来详细介绍一下各个知识点吧~~~~~~

1. 通过索引值获得列表中元素
member = ['小甲鱼','黑夜','牡丹','怡静']
则member[0]代表值为'小甲鱼,而member[3]的值为‘怡静’'

2. 从列表中删除元素的方法
1)remove()方法
参数是一个元素,调用该函数则删除该列表中的该元素,如果输入的元素不在列表中,则程序报错,例如
member = ['小甲鱼','黑夜','牡丹','怡静']
member.remove('黑夜'),此时member列表为 ['小甲鱼','牡丹','怡静']
而此时如果再执行member.remove('黑夜'),由于该元素已经不存在此列表中,执行时将会报错

2)del语句
直接删除一个元素值,可以直接通过索引值获得需要删除的元素,例如:
member = ['小甲鱼','黑夜','牡丹','怡静']
del member[2],则列表变为['小甲鱼','黑夜','怡静']
而执行语句del member,则member列表被删除,如果想再访问member则程序报错,因为它已经不存在了。

3)pop()方法
不给出参数,直接返回列表中最后一个元素并从列表中删除,例如:
member = ['小甲鱼','黑夜','牡丹','怡静']
执行完 name = member.pop()后   member变为 ['小甲鱼','黑夜','牡丹'],而name为'怡静'
也可以给出索引值参数,直接返回该索引值对应元素并从列表中删除。例如继续执行member.pop(0),则member变为 ['黑夜','牡丹']

3. 列表分片(slice)
当需要从列表一次性取出多个元素时,需要通过列表分片的方式来实现,其基本形式是列表名[左索引值:右索引值:步长],左右索引值及步长都可以省略,左索引值省略时表明,列表元素从0开始,右索引值省略表示包含左索引值右边的所有元素,步长省略表明步长为1。例如:
member = ['小甲鱼','黑夜','牡丹','怡静']        
split1 = member[1:3],则列表split1为 ['黑夜','牡丹']                      #member本身元素并没有发生变化,相当于生成了包含元素1和2的新列表
split2 = member[:3]则列表split2为 ['小甲鱼','黑夜','牡丹']           #表示从第0个索引值开始
split3 = member[1:],则列表split3为 ['黑夜','牡丹','怡静']               #表示从左索引值开始到列表右边所有元素
split4 = member[:],则列表split4为 ['小甲鱼','黑夜','牡丹','怡静']     #相当于复制了一份原列表
另外,python支持负数索引,-1相当于列表中右侧第一个元素值,以此类推。步长也允许为负值,举例说明:
split5 = member[-1:-3:-1],则列表split5为['怡静', '牡丹']
split6 = member[-3:-1:1],则列表split5为['黑夜', '牡丹']

4. 列表拷贝疑难点解析
        通过将已知列表名直接赋值给一个变量和通过分片操作及列表内置方法copy()赋值给一个变量新建一个列表的本质区别:前者两个变量指向通一个数据存储空间,存储空间内数值发生变化,则两者均改变;后者相当于重新建立了一个存储空间,里面的数据不受其他空间内数值变化影响。举例说明:
>>> list1 = [1,3,5,7]                           # 创建一个列表list1
>>> list2 = list1                                 # 直接将list1赋值给变量list2
>>> list3 = list1[:]                              # 通过切片方式获得list1列表所有元素并赋值给变量名list3
>>> list4 = list1.copy()                      # 通过copy()方法拷贝list1列表所有元素并赋值给变量名list4
>>> list1.reverse()                             # 通过reverse()方法对列表list1元素进行逆序操作
>>> list1
[7, 5, 3, 1]                                            # list1内的元素已经发生改变
>>> list2
[7, 5, 3, 1]                                            # list2内的元素与list1相同,已经发生改变
>>> list3
[1, 3, 5, 7]                                            # list3内的元素保持不变,不受list1影响
>>> list4
[1, 3, 5, 7]                                            # list4内的元素保持不变,不受list1影响





本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-28 15:45:42 | 显示全部楼层
pop函数还有:.pop(x)是取出第x个元素

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
醉酒青牛 + 2 + 2 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2015-11-23 19:28:48 | 显示全部楼层
member[0]  可以从列表中读取其中某一个。都是从0开始,切记。
remove(参数)函数  移除其中一个。
del语句 可以删除其中一个 del member[1], 也可以删除整个 del member
pop()函数 不需要参数  直接删除最后一个取出来。
[左索引值:右索引值]
包含左边 不包含右边
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-8-29 10:46:32 | 显示全部楼层
来鼓励你下!!!
del 不是将列表里面的内容删除变成空列表,而是删除整个列表哦,也就是在内存里面已经没有这个列表了,执行完del 语句后,再访问被删除的列表,执行结果如下
>>> del member
>>> member
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    member
NameError: name 'member' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-8-29 11:55:38 | 显示全部楼层
John_farmer 发表于 2015-8-29 10:46
来鼓励你下!!!
del 不是将列表里面的内容删除变成空列表,而是删除整个列表哦,也就是在内存里面已经没 ...

:hug:,谢谢,你看的也很仔细和深入呀,已修改哈:victory:。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-29 14:56:38 | 显示全部楼层
醉酒青牛 发表于 2015-8-29 11:55
,谢谢,你看的也很仔细和深入呀,已修改哈。

哈哈,我可是把你的帖子当做复习材料来用的哈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-29 17:06:42 | 显示全部楼层
John_farmer 发表于 2015-8-29 14:56
哈哈,我可是把你的帖子当做复习材料来用的哈!

O(∩_∩)O哈哈~,这样我就更有动力坚持做总结啦:handshake:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-30 09:57:27 | 显示全部楼层
醉酒青牛 发表于 2015-8-29 17:06
O(∩_∩)O哈哈~,这样我就更有动力坚持做总结啦

必须的,所以你要坚持做下去!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 10:57:34 | 显示全部楼层
这次课后习题错了两个,继续加油~
主要还是思维方式,还未转换过来,是元素还是列表;计算机存储的习惯……

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
醉酒青牛 + 1 + 1 感谢分享

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-10-18 21:41:49 | 显示全部楼层
不知不觉已经很认真的看了11讲了,谢谢你的总结,收货蛮多的!一起加油学习好Python。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-30 17:07:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-15 12:04:49 | 显示全部楼层
我问个问题;
mem = ['小甲鱼','黑夜','牡丹','怡静']
利用分片mem[:2]输出为['小甲鱼','黑夜'],表示从0开始,获取直到序号为2的前面的所有元素
而mem[2:]输出 ['牡丹','怡静'] 表示获取从序号为2的元素后的所有元素
那我又试了一下mem[2:3] 它的输出确实['牡丹']
试问,按上述逻辑,mem[2:3]和mem[2:]的输出为什么不同?mem中元素的排序是0.1.2.3。要得到与mem[2:]一样的结果得输入mem[2:4],关键是没有序号为4的元素,这里该如何统一呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-20 17:44:57 | 显示全部楼层
我也来学习py 发表于 2015-11-15 12:04
我问个问题;
mem = ['小甲鱼','黑夜','牡丹','怡静']
利用分片mem[:2]输出为['小甲鱼','黑夜'],表示从0 ...

mem中确实没有标号为4的元素,但是你如果mem[2:4]结果和mem[2:]是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 09:36:38 | 显示全部楼层
子瓜白王 发表于 2015-11-20 17:44
mem中确实没有标号为4的元素,但是你如果mem[2:4]结果和mem[2:]是一样的

恩恩 所以还是直接用[2:]省事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-26 12:03:56 | 显示全部楼层
支持一下,坚持!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-9 11:00:19 | 显示全部楼层
非常好,特别有用,特别适合看过之后复习巩固,不然后面看了前面又忘了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-19 17:32:53 | 显示全部楼层
牛兄,支持你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-16 10:54:45 | 显示全部楼层
复习一下,顺便赚鱼币写作业
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-2 08:55:53 | 显示全部楼层
好详细,还有难点解析
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-23 13:26:42 | 显示全部楼层
谢谢小牛分享 我也是当作复习帖子看的  还是要多看看  有些还是不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 17:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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