14 再谈列表
掌握列表非常重要哦
大纲
列表的更多操作
列表解析
列表和字符串的相互转换
列表的嵌套
练习:数字移位
练习:苹果编号
列表的更多操作
前一课我们学习了列表的操作,列表可以用于处理一大串数字,在python编程中用处非常广泛。其实列表中的元素不仅可以用来保存数值,还可以用来保存字符串。例如我们可以用列表来定义学校中一天的课程。要注意在定义这个中文字符串构成的列表时,除了汉字本身以外的所有标点符号都需要是英文格式。
一个经常用的函数是len,用于计算列表的长度,也就是列表中有多少个元素。
这个字符串元素构成的列表和数值构成的列表一样,可以做选择、新增和修改的操作。
如果想判断某个列表中是否包括某个元素,可以通过in来判断条件。
做修改后课程就变成下面的样子了。
如果是想删除列表中的某个元素,有两种方法,一种是使用del,另一种是使用pop
del命令可用于删除列表中任一个位置的元素。上例中是删除了第一个。
pop则是默认删除列表中最后一个位置中的元素,同时将这个元素返回出来。
列表还可以通过加号进行拼接
选择列表中的元素的时候,不仅可以选择某个元素,还可以选择某一些元素,例如我们选出上午四门课。
方括号内不再是某一个数字编号,而是一个起始编号加冒号加结束编号,也就是从0号位置到4号位置之前的元素都选择出来,注意4号位置并不选出。如果起始编号是从0号开始的,这个起始编号可以省略不写,如下例一样。
然后我们再把下午的三门课选出来,编号就是从4号位置开始,一直到最后,这个结束编号可以省略不写。
我们也可以从后面往前选择,从倒数第三门课开始选择,和上面的结果是一样的
列表解析
上一课我们见到了,可以通过循环来处理列表中的每一个元素,例如找到20以内的偶数。
有一种更简洁的循环写法,称为列表解析,列表解析的写法和循环非常相似,其中for...in的关键词用法完全一样,不过是写在一行内,之后可以增加if条件进行过滤筛选,将需要的x写在最前面,最后是用一对方括号放在两边,这样整体的输出是一个列表。
同样,让我们用列表解析来处理字符串列表,例如把这天课程中不包括“自习”的课程选择出来。在这里使用了一个新的比较操作符,!=就是不等的意思。
选择出这天课程中不包括自习和音乐的课程出来,in是用来判断x是否在某个列表中,如果不在自习、音乐课的列表中的课程会被筛选出来
列表和字符串的相互转换
列表可以整合成一个大的字符串,一个大的字符串也可以分拆成一个列表,让我们看一个例子。
列表通过一个下划线符号进行连接,整体成为一个字符串,下例再逆反回去,用split函数,再将这个大的字符串分拆成一个列表。
列表的嵌套
列表不仅可以保存数值和字符串,它还可以保存列表,也就是说列表的元素也可以是列表。这种称之为嵌套列表。下例我们用一个列表来表示各门课程以及对应的成绩分数。其中每个元素都是一个有两个元素的小列表,小列表中第一个位置是存放课程,第二个位置是存放分数。
让我们选择出分数大于90分的课程,使用列表解析就非常方便,遍历列表,其中课程的分数放在第二个位置,所以用c[1]表示,如果分数大于90,就输出c[0],就是课程的名字
再来计算下这几门课的平均分数,先用来个列表解析将所有的分数取出,再循环遍历所有的分数,将分数累加,再用这个累加的分数去除以课程的个数,最后用round四舍五入一下,得到平均分。
练习:数字移位
一个列表中由1-5这五个数字元素填充,将它们进行循环移位,[1,2,3,4,5] 变成 [2,3,4,5,1]
练习:苹果编号
30个苹果排成一个圆圈,每个苹果上进行顺序编号,从0到29,从0开始数,每数7个苹果则将这个苹果取出来放到一边去。拿走一半的苹果后停止,问剩下的苹果,编号是哪些?
Last updated
Was this helpful?