python3编程技巧二——如何在列表、字典、集合 中根据条件筛选数据
一、列表筛选数据
1 # coding=utf-8 2 from random import randint 3 4 # 创建随机列表 5 l = [randint(-10, 10) for i in range(10)] 6 print(l) 7 8 # 通过列表解析过滤大于0的数据 9 r = [x for x in l if x >= 0] 10 print(r) 11 12 13 # 通过filter函数过滤大于0的数据 14 r2 = filter(lambda x: x >= 0, l) 15 16 # filter在python2中直接返回列表,在python3中返回生成器 17 r2 = list(r2) 18 19 print(r2)
二、字典筛选数据
1 # coding=utf-8 2 3 from random import randint 4 5 # 创建学生分数字典 6 d = {'student%d' % i: randint(50, 100) for i in range(1, 10)} 7 print(d) 8 9 # 方法一:字典解析,找出分数大于90的 10 r = {k: v for k, v in d.items() if v >= 90} 11 print(r) 12 13 # 方法二:filter方法过滤分数大于90的 14 g = filter(lambda item: item[1] >= 90, d.items()) 15 g = dict(g) 16 print(g)
三、集合筛选数据
1 # coding=utf-8 2 3 from random import randint 4 5 # 创建随机集合 6 s = {randint(0, 20) for i in range(20)} 7 print(s) 8 9 # 方法一:集合解析过滤能被3整除的数 10 r = {x for x in s if x % 3 == 0} 11 print(r) 12 13 # 方法二:filter方法过滤能被3整除的数 14 r2 = filter(lambda x: x % 3 == 0, s) 15 r2 = set(r2) 16 print(r2)