【Python学习笔记】在列表和字典中根据条件筛选数据
2019-07-17 本文已影响0人
清梦载星河
一、在列表中筛选数据
待筛选列表data:
from random import randint
data = [randint(-10,10) for _ in range(10)]
任务:从待筛选列表中筛选出大于0的数
方法一:循环迭代
def shaixuan(alist):
tmp = []
for i in alist:
if i > 0:
tmp.append(i)
return tmp
编写一个筛选函数,将待筛选列表作为参数,返回一个已筛选好的列表。
方法二:filter函数
print(list(filter(lambda x: x>=0, data)))
此处使用了filter和lambda表达式,一句代码解决。
注意:python3中filter()返回一个可迭代对象,需要转换为列表才能看到结果。
方法三:使用列表解析
print(x for x in data if x >0)
代码同样只有一句。
使用ipython的%timeit魔法命令,平均时间列表解析 < filter函数 < 循环迭代
二、在字典中筛选数据
使用字典解析
待筛选字典d:
from random import randint
d = {x : randint(60,100) for x in range(1,21)}
从中筛出值大于90的键值对。
{ k:v for k,v in d.items() if v > 90}