更新时间:2022-08-04 来源:黑马程序员 浏览量:
filter函数会对指定序列执行过滤操作。
filter函数的定义如下:
filter(function, iterable)
在上述定义中,第一个参数function可以是函数名称或者None,第二个参数iterable可以是序列、支持迭代的容器或迭代器。返回值为迭代器对象。其中,function函数只能接收一个参数,而且该函数的返回值为布尔值。
filter函数的作用是以参数迭代器中的每个元素分别调用function函数,最后返回的迭代器包含调用结果为True的元素。示例代码如下:
func = lambda x:x % 2 result = filter(func, [1, 2, 3, 4, 5]) print(list(result))
上述示例中,定义了一个匿名函数func,返回某个数取余以后的结果,接着调用filter函数将[1,2,3,4,5]中的每个元素取出来,作为func的参数调用func函数,之后将结果转换为列表的形式显示。
程序输出的结果为:
[1, 3, 5]
为了让大家理解filter函数的作用,接下来,通过一张图来描述上述示例执行的原理,如图7-12所示。
图7-12 filter函数原理图
图7-12分析了上述程序执行的原理。由图可知,程序把原始序列的元素执行取余操作后,将不能被2整除(结果为True)的元素筛选出来构成一个新的列表。