列表推导式允许过滤一个容器的元素,用一种简明的表达式转换传递给过滤器的元素,从而生成一个新的列表。其基本形式为:newlist = [Expression for var in list if condition]
参数:
newlist:生成新列表的名称
Expression:用于计算新列表的表达式
var:变量,值为后面列表的每个元素
list:指的是生成新列表的原列表
condition:条件表达式,用用于指定筛选条件
示例:
从如下列表中选出年龄大于30岁的值,常用写法如下
age = [8,15,31,3,21,44,19,58]
new_age = []
for x in age:
if x > 90:
new_age.append(x)
但使用列表推导式则写法如下:
age = [8,15,31,3,21,44,19,58]
new_age =[x for x in score if x > 30]
下面讲述嵌套列表推导式,如下为一系列姓名,需挑选出其中含有2个字母e以上的名字
all_data = [['john','emily','michael','mary','steven','maria','juan','javier','natalia','pliar']]
常见方法为:
names_of_interest=[]
for names in all_data:
enough_es = [name for name in names if name.count('e') >= 2]
names_of_interest.extend(enough_es)
使用嵌套列表推导式则可写为:
result = [name for names in all_data for name in names if name.count('e') >= 2]
for循环部分根据嵌套的顺序排列,过滤条件放在最后。