编程语言应用

注册

 

发新话题 回复该主题

Python六君子之List后传 [复制链接]

1#
,今天我们继续聊聊Python“六君子”之List。上篇文章中遗留了一个知识点,在此我补充一下,当我们执行“+=”操作的时候,Python默认调用__iadd__方法,当__iadd__方法不存在时,才调用__add__方法,所以我们在《Python“六君子”之List(上)》提到的“a+=b”和“a=a+b”的差别,仅对有__iadd__方法的类型(即可变类型)有效,大家可以尝试着对int型进行“+=”和“+”的对比操作,看看和List有什么区别。,我们继续阅读List文档,看看它还有哪些特性,请看下图。我们一起分析一下,append方法用于将一个对象添加到列表的最后;extend方法可以将可迭代对象中的元素append到列表最后;insert方法在索引index的前面插入对象。,我们通过个小例子试一下,看看对不对。,完全正确!大家是不是越来越学的自信了,让我们趁热打铁,继续如上图,大家一起分析一下这两个方法,pop方法用于将索引为index的值移除并返回,index默认为最后一个;remove方法用于将列表中第一次出现的数值value移除,可能大家还不是特别明白pop和remove这两个方法的具体含义,,让我们再通过个小例子具体分析一下。大家看,a=list1.pop(),由于没有设置索引值,index默认为最后一个,语句执行后,list1的最后一个元素‘dance被移除,同时赋值给变量a;下一个语句b=list1.pop(3)执行后,索引值为3的元素’Chinese被移除并赋值给变量b;跳过append语句,我们继续看,list1.remove(teacher)被执行后,列表list1中第一次出现的也就是索引值为3处的teacher’被移除。听完苏苏的分析后,大家应该有了比较深的印象了吧,不要偷懒,自己也要独立分析一遍啊。,还有一个比较好玩的方法,我们再一起看看。这个比较简单,就是排序,不解释,直接上例子。我们在C语言中学习过各种排序法,冒泡排序、插入排序、选择排序、堆排序等等,在Python中不用管这些,就一个方法sort,搞定!比起C语言的“枯燥深奥”,Python简直就是计算机小白的福音啊。对了,现在又有了一个需求,我想取得列表的部分元素,也就是把列表切成一片一片的,取其中一片,怎么办?就以我们电视中经常看到的,去掉一个最高分,去掉一个最低分,然后取平均分,这个怎么操作呢?还以上面score为例,大家想想看。有的小伙伴给了这样的做法:总和减了第一个,再减了最后一个,再除以元素个数。问题倒是解决了,不过不够直观,这样的代码我们不学。在这儿,我教给大家一个方法,叫做“切片操作”,这也是Python送给我们的福利上述代码中score[1:-1]将score的第二个到倒数第二个之间的所有元素都取出来了,并赋给了s1,生成了新的列表。在Python3中,切片操作是非常灵活的,其语法表达式为:[start_index:end_index:step],其中:1)start_index表示起始索引,默认值为0,也就是指向第一个元素2)end_index表示结束索引,默认值为-1,也就是指向最后一个元素3)step表示步长,步长不能为0,且默认值为1切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索引减1)的所有元素。不明白什么意思吗,我再举一个例子,你就清楚了。当步进值为负数时,start_index默认为-1,也就是指向最后一个元素;而end_index默认为0,也就是指向第一个元素,举个例子大家看看怎么样,结果正好与上面相反吧!Python切片操作是真心强大啊,除了List,还支持tuple、string等,大家可以自己尝试着操作,有一点需要注意,切片操作并没有改变原来对象,而是生成了一个新的对象。今天干货真是爆棚啊,大家一定要记住自己多动手敲代码,光看是没有多大效果的。,Python“六君子”之List就聊到这儿,还有更多的编程大餐苏苏会陆陆续续在以后的日子里为大家呈现,敬请享用。
分享 转发
TOP
发新话题 回复该主题