在Python语言当中,一个很神奇的特性则是列表推到式了,它能够从一个列表里面筛选出你满意的部分,并重新组成一个列表,甚至可以对筛选的列表的内容进行修改
比如说我们有一维列表:
list=[1,3,5,6,2,34,7,3,5,8]
我们想把其中大于10数字抽取出来,并重新通过append()方法生成一个大于数字10的列表,因此书写列表推倒式:
[num for num in list if num>10]
得到:
[34]
可见,34是在这个list当中最大的数字。同时重新组成一个新的列表,那么列表推倒式的通常写法则是这样的:
[表达式或变量 for 变量 in list if语句]
第一个是我们的表达式或者变量,表示使用append方法重新进入新列表的变量是什么,需要和for右边的变量有一定的关联,不然这个变量是没有申明过的话是会报错的。也可以将符合条件的变量做了一定修改之后再放到第一个表达式或者变量的地方,append进入新的列表。比如说我们想要list当中大于10的数字,同时让这个数字加一,我们该如何书写这个列表推倒式呢?:
[num+1 for num in list if num>10]
也就是将append到新列表当中的每一个数字num+1再写入列表推倒式当中,最后得到的结果也很显然是[35]了,您感兴趣的话可以自己试试看。或者我们有一个新的列表,列表里面充满了人的名字,我们需要找到长度大于三的人名,并同时将长度大于三的人名首字母大写,最后再重新得到一个新的列表,代码改如何书写呢?代码的书写方法如下所示,首先创建列表:
list=["bob","mike","kelly","ao li gei"]
书写列表推倒式:
[name.capitalize() for name in list if len(name)>3]
得到:
['Mike', 'Kelly', 'Ao li gei']