Python内置函数,17-filter

官方文档

filter(function, iterable)

Construct an iterator from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

Note that filter(function, iterable) is equivalent to the generator expression (item for item in iterable if function(item)) if function is not None and (item for item in iterable if item) if function is None.

See itertools.filterfalse() for the complementary function that returns elements of iterable for which function returns false.

说明:1.filter用于过滤序列,过滤的方式则是采用传入的函数,去循环序列的元素调用,如果函数的结果为True则保留元素,否则将舍弃该元素

#普通方式
li = [11,22,33,44] def f1(x): return x > 22; ret = filter(f1,li) print(ret) #输出 <filter object at 0x104378a90> #通过便利获取对象 for item in ret: print(item) #输出 #33 #44
#通过lamdba函数实现上述功能
ret = filter(lambda x: x > 22,li)
for item in ret:
print(item)
#输出
#33
#44

2.当fuction参数传入为None的时候,序列中的函数即使返回False,也会自动舍弃

#如果参入的函数为None,序列中的元素值即使为False,也会自动舍弃
def f2(x):
return True
c = ['','I',False,{},[],(),None] li = list(filter(f2,c)) print(li) #输出 #['', 'I', False, {}, [], (), None] li = list(filter(None,c)) #筛选函数为None时,自动舍弃序列中的False值,空字符串、False、[]、None、{}、() print(li) #输出 #['I']