python小点心--filter函数
原创
©著作权归作者所有:来自51CTO博客作者wx63d78546a4969的原创作品,请联系作者获取转载授权,否则将追究法律责任
filter 和ifilter这两个函数是内置模块itertools 提供的,通过两个例子来了解一下他们的作用
from itertools import *
lst = [3,6,1,4,8,6]
lst2 = filter(lambda x:x>3,lst)
print type(lst2)
print lst2
打印结果为:
<type 'list'>
[6, 4, 8, 6]
filter通过lambda对lst进行过滤,凡是大于3的元素都不保留了下来,并返回一个新的list
from itertools import *
lst = [3,6,1,4,8,6]
lst2 = ifilter(lambda x:x>3,lst)
print type(lst2)
for i in lst2:
print i
打印结果为:
<type 'itertools.ifilter'>
6
4
8
6
使用iflter,也是对lst进行过滤,但返回的并不是list,而是一个生成器,此时,6,4,8,6都是不存在的,只有在for循环中具体使用时才会存在,不光如此,对于lst2,我们只能使用一次
from itertools import *
lst = [3,6,1,4,8,6]
lst2 = ifilter(lambda x:x>3,lst)
print type(lst2)
for i in lst2:
print i
for i in lst2:
print i
第二次的for循环什么也不会打印,因为第一次for循环时,生成器已经遍历到末尾。