欢迎访问宙启技术站
智能推送

Python函数:filter()函数的详解与应用

发布时间:2023-05-28 11:02:57

Python中的filter()函数是一个内置函数,用于过滤序列中的元素,返回一个过滤后的新列表。filter()函数可以接受一个函数和一个序列作为参数,将序列中的每个元素传递给函数进行判断,并返回结果为True的元素组成的新列表。

语法如下:

filter(function, iterable)

其中,function为接受一个参数的函数,iterable为一个序列。

举个例子,如果我们想要过滤掉列表中所有的偶数,可以这样实现:

list(filter(lambda x: x%2!=0, [1,2,3,4,5,6,7,8,9]))

以上代码输出:[1, 3, 5, 7, 9]

在上述代码中,使用了lambda匿名函数来表示判断条件,即只要x模2不等于0,就保留该元素。传入的序列[1,2,3,4,5,6,7,8,9]中,偶数被过滤掉,只返回了[1,3,5,7,9]。

下面是filter()函数的一些常见用法。

1.过滤空值

如果我们想要过滤掉一个列表中的空字符串、空元素和None值,可以这样实现:

list(filter(None, ['hello', '', None, 'world', '']))

以上代码输出:['hello', 'world']

在上述代码中,使用了None函数代表一个判断条件,即为真的元素会被保留下来。

2.过滤负数

如果我们想要过滤掉一个列表中的负数,可以这样实现:

list(filter(lambda x: x>=0, [1,-2,3,-4,5,-6,7,-8,9]))

以上代码输出:[1, 3, 5, 7, 9]

在上述代码中,使用了lambda匿名函数来表示判断条件,即只要x不小于0,就保留该元素。

3.过滤文件名

如果我们想要过滤掉一个目录中所有的非Python代码文件,可以这样实现:

import os

files = os.listdir('.')
list(filter(lambda x: x.endswith('.py'), files))

在上述代码中,使用了os模块获取当前目录下的所有文件列表。然后使用lambda匿名函数来判断每个文件名,只要以".py"为后缀的文件名才会被保留下来。

总结:filter()函数是一个非常常用的内置函数,在序列处理中发挥了重要作用,可以用来过滤不需要的元素,从而达到过滤、筛选等功能。