首页 > 代码库 > 在列表,字典,集合中根据条件筛选数据
在列表,字典,集合中根据条件筛选数据
在列表,字典,集合中根据条件筛选数据
案例分析:
1、 过滤列表[3,9,-1,10,20,-2...]中的负数
2、 筛选字典{"A":78,"B":59,"C":82,"D":94...} 中值大于80的项
3、 筛选集合{44,55,66,77,88,99...}中能被3整除的元素
"""
# eg_v1 使用迭代 如: # data = [1,3,-3,-5,10,5,3,4,-4] # res = [] # for x in data: # if x >= 0: # res.append(x) # print (res) # # [1, 3, 10, 5, 3, 4]
"""
解决方法:
1、 列表, filter函数 filter(lambda x : x >= 0,data)
列表解析 [ x for x in data if x >= 0 ]
2、 字典, 字典解析 { k:v for k,v in d.items() if v > 90 }
3、 集合, 集合解析 { x for x in s if x % 3 == 0 }
"""
列表解析,取出大于和等于0 的元素
from random import randint data = [ randint(-10,10) for _ in range(10)] # 随机生成一个10个元素的列表,在[-10,10] 之间 print (data) # [1, 8, 2, 6, -8, 2, -1, 0, 1, -5] # 使用普通的迭代方法 res = [] for x in data: if x >= 0: res.append(x) print (res) # [1, 8, 2, 6, 2, 0, 1] # 使用 filter函数 data1 = filter(lambda x:x >= 0,data) res1 = [] for i in data1: res1.append(i) print (res1) # [1, 8, 2, 6, 2, 0, 1] # 使用列表解析 res2 = [ j for j in data if j >= 0] print (res2) # [1, 8, 2, 6, 2, 0, 1]
# 分析三种方法,那种运行最快 可以使用 timeit 函数,推荐使用列表解析
字典解析,筛选成绩
d = { x : randint(60,100) for x in range(1,21) } # 创建20个元素,值在60-100之间 print (d) # {1: 88, 2: 98, 3: 73, 4: 94, 5: 83, 6: 76, 7: 78, 8: 85, 9: 78, 10: 69, 11: 95, 12: 64, 13: 77, 14: 75, 15: 84, 16: 79, 17: 79, 18: 90, 19: 79, 20: 72} # 根据值,筛选值大于等于80 的字典 values = { k : v for k , v in d.items() if v >= 80 } print (values) # {1: 88, 2: 98, 4: 94, 5: 83, 8: 85, 11: 95, 18: 90, 15: 84}
集合解析,筛选能被3整除的元素
from random import randint set0 = [ randint(-10,10) for _ in range(10)] set1 = set(set0) # 将列表转行为集合 print (set1) # {0, 4, 5, 6, 8, -9, -8, -1} set2 = { x for x in set1 if x % 3 == 0} print (set2) # {0, 6, -9}
在列表,字典,集合中根据条件筛选数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。