python如何在列表,字典,集合中进行筛选

python备忘

比如说我随机创建一个-10,10的一个列表,并且筛选出所有大于0的数

from random import randint
data = [randint(-10,10) for _ in range(10)]

当然我们可以用传统的迭代来解决这个问题

res = []
for x in data:
  if x>=0:
    res.append(x)
print res

但是这个效率比较低,而且比较啰嗦。我们用filter函数来处理一下

res = filter(lambda:x:x>=0,data)
print res

我们也可以使用列表解析来处理

res = [x for x in data if x>=0]
print res

哪个效率比较高呢,我们可以测试一下,我们分别在这两种处理前面加上timeit来监控一下处理时间,发现列表解析这个效率要比filter要高。

字典筛选元素怎么处理呢,假如一个班级有50个人,我们把这50个人的成绩保存在字典里面,然后取出90分以上的成绩

首先我们生成一个50-100的随机值

d = {x:randint(50,100) for x in range(1,50)}

现在我们根据值来过滤出90分以上的成绩,这个和上面的列表解析类似

ret = {k:v for k,v in d.iteritems() if v>90}
print(ret)

这样我们就取出了90分以上人的成绩,然后我们看看集合的解析

data = [randint(-10,10) for _ in range(10)]
s = set(data)

我们得出有被3整除的元素好了

{x for x in s if x%3==0}

这个比较简单,先总结一下备忘

2016-12-07 11:13:33

python
python

这是介绍的地方

python的标签

本文相关标签

推荐应用

友情链接


皖ICP备14007051号-2 关于穆子龙