点击上方蓝字关注我,让我成为你的专属小太阳
今天要讲的是,如何在列表、字典、集合中过滤数据,在平时编程中会经常遇到这类问题:
过滤掉列表[3,9,-1,10,20,-2...]中的负数
筛选出字典{'Lilei': 79,'Jim': 88,'Lucy':92}值大于90的
筛选出集合{77,82,32,20}能被3整除的元素
这种场景的通用的做法是,遍历集合,如果条件满足了,就放入到集合列表中,代码如下:
# 1.通用的做法
data = [1,5,-3,-2,6,0,9]
res = []
for x in data:
if x >= 0:
res.append[x]
println(res)
在Python中,我们还可以使用一些高级的工具
使用Python中的函数式编程,使用列表解析,字典解析,集合解析,这种方式处理问题,更加简洁高效
1
使用filter函数
# 2.列表筛选
from random import randint
data = [randint(-10,10) for _ in range(10)]
res = filter(lambda x : x >= 0,data)
print(list(res))
2
使用列表解析
# 3.列表解析
res = [x for x in data if x >= 0]
print(res)
列表解析会比filter函数更加快一点
3
对字典使用列表解析
对于字典来说
字典过滤:
# 4.字典筛选
data = {x:randint(60,100) for x in range(1,20)}
# 过滤出分数高于90的同学
res = {k:v for k,v in data.items() if v >= 90}
print(res)
4
对集合使用解析
集合解析
# 5.集合筛选
data = set([randint(-10,10) for _ in range(10)])
res = {x for x in data if x >= 0}
print(res)
使用解析,是不是很方便?工作中多多使用哦!