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

Python中的高阶函数:filter()教程

发布时间:2023-06-08 05:51:44

在Python中,高阶函数指的是可以接受函数作为参数或返回函数的函数。其中,filter()是一种非常常用的高阶函数,它可以用于筛选序列中的元素。

filter()函数的语法如下:

filter(function, iterable)

其中,function表示过滤函数,它必须是一个接受一个参数并返回布尔值的函数。iterable表示可迭代对象,如列表、元组、字符串等。

filter()函数会遍历可迭代对象,并将其中的每一个元素传递给过滤函数进行判断。若过滤函数返回True,则该元素保留在新生成的可迭代对象中;若返回False,则该元素被舍弃。

下面是一个例子:

# 筛选出列表中所有的偶数
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)    # 输出 [2, 4, 6, 8]

在这个例子中,传递给filter()的函数是一个lambda表达式,它判断元素是否为偶数。由于filter()函数返回的是一个迭代器对象,因此需要使用list()函数将其转换为列表。

下面再来看一个例子,该例子使用filter()函数筛选出长度大于等于5的字符串:

# 筛选出长度大于等于5的字符串
words = ['apple', 'banana', 'orange', 'pear', 'grape']
long_words = list(filter(lambda x: len(x) >= 5, words))
print(long_words)   # 输出 ['apple', 'banana', 'orange', 'grape']

同样地,该例子中传递给filter()的函数也是一个lambda表达式,它判断字符串的长度是否大于等于5。

filter()函数的应用场景非常广泛,它可以用于筛选出特定条件的元素,或者删除不需要的元素。同时,filter()函数也可以与其他函数一起使用,如map()函数,来实现更复杂的操作。