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}
善守者藏于九地之下, 善攻者动于九天之上