Py小技巧一:在列表,字典,集合中根据条件筛选数据

1.过滤掉列表中的某些项---列表解析
data=[1,4,2,8,5,-1]
res=[]
a.依次迭代列表中每一个项
for x in data:
 if >=0:
       res.append(x)
print res
b.使用lambda表达式来进行过滤
form random import randint
data = [randint(-10,10)for _ in xrange(10)]
filter(lambda x: x>=0,data)
c.使用列表解析俩进行过滤
[x for x in data if x>=0]
对两种情况进行性能的比较:
timeit filter(lambda x: x>0,data)->909ns
timeit [x for x in data if x>=0]->455ns
由上可以看出列表解析的速度更快,首选列表解析,但是上述两种方法都远快于迭代的方法
2.筛选出指点中的某些元素----字典解析
d = {x:randint(60,100) for x in range(1,21)}
#筛选出字典中大于90的值
{k: v for k,v in d.iteritems() if v>90}  #使用字典解析
3.筛选集合中符合某些条件的元素---集合解析
{x for x in s if x% 3==0}

 

posted @ 2017-05-10 21:09  九天鲲鹏  阅读(231)  评论(0编辑  收藏  举报