Python实用技巧之列表、字典、集合中根据条件筛选数据详解
通用做法:迭代
以列表为例:
筛选出下列数字大于等于0的数
data=[2,7,-4,-1,3,0,8] res=[] foriindata: ifi>=0: res.append(i) print(res)
运行结果:
[2,7,3,0,8]
奇淫巧技——列表筛选
使用filter函数
随机生成一组正负数皆有的数,筛选出大于等于0的数
flilter(functionorNone,iterable)
fromrandomimportrandint data=[randint(-10,10)for_inrange(10)] #filter接收两个参数,第一个参数为过滤条件,第二个参数为过滤范围 f=filter(lambdax:x>=0,data) forjinf: print(j)
使用列表解析(列表推导式)
随机生成一组正负数皆有的数,筛选出大于等于0的数
fromrandomimportrandint data=[randint(-10,10)for_inrange(10)] f=[iforiindataifi>=0] print(f)
使用timeit测试两种方法的运行速度得到:使用列表解析的速度更快,但二者皆比通用做法迭代要快
奇淫巧技——字典筛选
假设有20个学生,学生分数在60-100之间,筛选出成绩在90分以上的学生
importrandom dict={i:random.randint(60,100)foriinrange(1,21)} #print(dict) #根据值过滤除分数高于90的人 res={k:vfork,vindict.items()ifv>90} print(res)
奇淫巧技——集合筛选
10个随机的正负数,筛选出可以和2整除的数字
importrandom data=set(random.randint(-10,10)for_inrange(10)) #print(data) #筛选集合中能被2整除的数 res={iforiindataifi%2==0} print(res)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。