Python filter函数

Python filter函数教程

Python 中的 filter() 函数是一个内置的高阶 函数,filter 函数会根据传入的函数对指定序列做过滤。

map() 类似,filter() 也接收一个函数和一个序列,和 map() 不同的是,filter() 把传入的函数依次作用于每个元素,然后根据 返回值True 还是 False 决定保留还是丢弃该元素。

Python filter函数详解

语法

filter(function, iterable)

参数

参数 描述
function 我们需要传入的函数,这个函数可以是内置的,也可以是自己定义,或者是 匿名函数
iterable 一个可迭代对象,如 列表字符串元祖字典 等等。

返回值

返回的是一个 filter 对象,注意不是列表不能直接输出,可以通过 for 循环 或者 list() 来显示。

案例

Python filter函数

Python filter函数过滤元素

print("嗨客网(www.haicoder.net)") def is_even(num): return num % 2 == 0 filter_even = filter(is_even, [2, 5, 6]) for val in filter_even: print("filter_even =", val)

程序运行后,控制台输出如下:

64_python filter函数.png

我们使用 filter 函数,第一个参数传入了自定义的 is_even 函数,第二个参数传入了一个列表,列表中有三个元素。

最后,我们使用 变量 filter_even 来接受 filter 函数对列表每个元素过滤后的返回值,我们发现,过滤后只剩下了所有的偶数。

即,我们通过 filter 函数上实现了求传入的 list 的偶数元素的功能,并返回一个新的 list。

Python filter函数

Python filter 函数可以传入自定义函数

print("嗨客网(www.haicoder.net)") def filter_num(x): if x % 2 == 0 and x % 7 == 0: return True return False filter_n = filter(filter_num, range(1, 51)) for val in filter_n: print("filter_n =", val)

程序运行后,控制台输出如下:

65_python filter函数.png

我们使用 map 函数,第一个参数传入了我们自定义的 filter_num 函数,该函数实现的功能是判断参数是否既能被 2 整除又能被 7 整除,第二个参数使用 range 生成了 1 到 50 的数列。

最后,我们求出了 1 到 50 之间所有既能被 2 整除又能被 7 整除的数。

Python filter函数

Python filter函数可以使用 lambda 表达式

print("嗨客网(www.haicoder.net)") filter_vals = filter(lambda x: x >= 7, [1, 3, 5, 7, 9]) for val in filter_vals: print("filter_val =", val)

程序运行后,控制台输出如下:

66_python filter函数.png

我们使用 filter 函数加上 lambda 表达式实现了求我们传入的列表中元素值大于等于 7 的所有元素。

Python filter函数总结

和 map() 类似,filter() 也接收一个函数和一个序列,和 map() 不同的是,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素。Python filter 函数语法:

filter(function, iterable)