案例 1 :对列表中的数据进行筛选。
如 list1=[-1,2,-3,-4,-5,6,76,3,23,12] 在列表中过滤掉负数,只保留列表中的正数
使用列表解析式生成一个含有正数和负数的随机列表 (使用random中的randint方法)
>>> from random import randint
>>> list1=[randint(-10,10) for x in range(15)] 在-10到10之间随机生成15个数组成列表list1
1.使用迭代 for循环
res=[]
for one in list1:
if one>=0:
res.append(one)
print(res)
输出结果是 [10, 10, 1, 0, 10, 9, 1] 。
2 使用列表解析
res=[one for one in list1 if one>=0]
print(res)
使用解析式和迭代 输出的结果是一样的 。
因为效率问题,当数据量过大,优先使用解析式。
案例2 筛选出字典中符合条件的值 比如学生成绩字典 筛选出成绩大于90的同学
生成随机字典
d1={k:randint(60,100) for k in range(1,21)} k是键 作为学生的学号,由range(1,21)生成1-20个学号,而值(成绩分数)是有随机函数生成60-100之间的分数。
使用字典解析
d2={k:v for k,v in d1.items() if v>90}
案例3 筛选出集合中可以被3整除的数值
同样 首先生成一个集合 使用随机函数生成
from random import randint
data={randint(1,100) for x in range(30)}
data1={x for x in data if x%3==0}
总结下 生成随机字典 列表 解析式 :
list1=[randint(-10,10) for x in range(15)] 列表 res=[one for one in list1 if one>=0]
d1={k:randint(60,100) for k in range(1,21)} 字典 d2={k:v for k,v in d1.items() if v>90}
data={randint(1,100) for x in range(30)} 集合 data1={x for x in data if x%3==0}
生成 解析
格式 循环条件 格式 遍历 循环条件