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

filter()函数-序列元素的过滤操作

发布时间:2023-06-05 23:56:45

filter()函数是一个用于序列元素过滤的Python内置函数,它接受两个参数: 个参数是一个用于过滤的函数,第二个参数是需要过滤的序列。filter()函数会根据 个参数指定的函数对第二个参数指定的序列中的每个元素进行判断,将满足条件的元素保留下来,返回一个新的序列。

filter()函数的语法如下:

filter(function, iterable)

其中,function为过滤函数,可以是任何可调用的函数,它的参数为序列中的每个元素,返回一个布尔值,表示是否将该元素保留下来;iterable为需要过滤的序列,可以是任何可迭代的对象,例如列表、元组、集合、字符串等。

下面我们将通过一些实例来演示filter()函数的用法。

实例一:删除列表中的偶数元素

下面是一个包含一些整数的列表,我们想从中删除所有的偶数元素,只保留奇数元素:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

res = filter(lambda x: x % 2 != 0, lst)

print(list(res))

运行结果为:

[1, 3, 5, 7, 9]

我们使用了一个lambda表达式作为过滤函数,对于seq中的每个元素,只有当该元素除以2的余数不为0时才会保留下来,即保留奇数元素。

实例二:删除字符串中的空格

下面是一个包含一些字符串的列表,我们想从中删除所有的空格,只保留非空格字符:

lst = [" John ", " Mary ", " Tom ", "Lisa ", " Jerry "]

res = filter(lambda x: x.strip(), lst)

print(list(res))

运行结果为:

[' John ', ' Mary ', ' Tom ', 'Lisa ', ' Jerry ']

我们使用了一个lambda表达式作为过滤函数,对于seq中的每个元素,只有当该元素经过strip()函数处理后不为空时才会保留下来,即保留非空格字符。

实例三:过滤列表中的空元素

下面是一个包含一些字符串的列表,我们想从中删除所有的空元素,只保留非空元素:

lst = ["John", "", "Mary", "Tom", "", "Lisa", "", "Jerry"]

res = filter(None, lst)

print(list(res))

运行结果为:

['John', 'Mary', 'Tom', 'Lisa', 'Jerry']

由于filter()函数的 个参数function允许为None,因此在本例中我们直接将None传递给了filter()函数,这样就可以过滤掉所有的空元素了。

通过以上实例,我们可以发现filter()函数非常灵活,可以根据我们的不同需求对序列中的元素进行过滤操作。在实际编程中,我们也可以根据具体业务需求自定义不同的过滤函数,然后结合filter()函数进行数据处理,从而提高程序的效率和可维护性。