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

Pyhton filter()函数的用法指南

发布时间:2023-06-11 13:32:14

filter()函数是Python内置函数之一,用于筛选序列中符合条件的元素,返回一个新的迭代器对象。它的用法非常灵活,可以根据自己的需求进行使用。

基本用法

filter()函数的基本语法格式如下:

filter(function, iterable)

其中,function是一个函数,用于筛选元素的逻辑判断;iterable是一个可迭代对象,例如列表、元组、集合等。

下面以列表为例,演示一下filter()函数的基本使用方法。

# 过滤掉列表中的非偶数元素

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

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

print(list(result)) # 输出 [2, 4, 6, 8, 10]

其中,lambda表达式用于判断元素是否为偶数,并将筛选出的元素返回。由于filter()函数返回的是一个迭代器对象,因此需要使用list()转换为列表进行输出。

高级用法

除了基本的用法外,filter()函数还支持一些高级用法,例如:

使用函数对象

除了lambda表达式外,也可以使用函数对象作为筛选条件。例如:

def is_even(x):

    return x % 2 == 0

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

result = filter(is_even, lst)

print(list(result)) # 输出 [2, 4, 6, 8, 10]

使用None作为筛选条件

如果不指定筛选条件,即将函数参数设为None,filter()函数会将序列中所有布尔值为False的元素过滤掉。例如:

lst = [1, 2, 3, '', 4, False, 5, None, 6, 0, 7]

result = filter(None, lst)

print(list(result)) # 输出 [1, 2, 3, 4, 5, 6, 7]

使用filter()函数实现链式调用

可以使用filter()函数实现类似于SQL中WHERE子句的链式调用方式,例如:

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

result = filter(lambda x: x > 5, filter(lambda x: x % 2 == 0, lst))

print(list(result)) # 输出 [6, 8, 10]

这里使用了两个filter()函数,第一个函数用于过滤掉非偶数元素,第二个函数用于过滤掉小于等于5的元素。最终输出的是满足两个筛选条件的元素。

总结

filter()函数是Python中非常常用的内置函数之一,可以用于筛选序列中符合条件的元素。除了基本用法外,还有一些高级用法可以根据需求进行使用,例如使用函数对象、使用None作为筛选条件、实现链式调用等。熟练掌握filter()函数的用法,对于写出高效且易读代码是非常有帮助的。