Python技术篇连载 — 如何在列表,字典,集合中根据条件筛选数据.md

过滤掉列表中的负数
常规的方法,可以用循环来做。

data = [1,4,-2,-5,6,7,8,9,-3]
res = []
for x in data:
    if x >= 0:
        res.append(x)

print(res)

第一种方式:filter函数

filter函数,第一个参数传的是function,第二个参数传的是list,tuple,string
list(filter(lambda x:x>=0,data))
[1, 4, 6, 7, 8, 9]

列表推导式

[x for x in data if x>= 0 ]
[1, 4, 6, 7, 8, 9]

接下来看一下两种方式的差别,会用到timeit

timeit list(filter(lambda x:x>=0,data))
859 ns ± 1.36 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

timeit [x for x in data if x>= 0]
342 ns ± 1.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

可以看到列表推导式,这种方式明显快于filter函数。而且这两种方式都快于迭代的方式。

筛选出字典中高于90的值

import random 
d = {x:random.randint(60,100) for x in range(1,21)}

{k:v for k,v in d.items() if v>90 }
{1: 95, 3: 95, 6: 93}

筛选出集合中能被3整除的元素

s = set(data)
{-5, -3, -2, 1, 4, 6, 7, 8, 9}

{x for x in s if x % 3 == 0}
{-3, 6, 9}

猜你喜欢

转载自blog.csdn.net/weixin_44469638/article/details/86595072