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

过滤函数(filter)

发布时间:2023-06-26 16:36:47

过滤函数(filter)是一种高阶函数,在Python中,filter()函数是一种可以从序列中筛选元素的函数,它通过设定的条件对序列进行筛选,返回一个筛选后的新序列。

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

filter(function, iterable)

其中:

function:是用于筛选序列的函数,必须返回一个布尔类型的值,True表示保留,False表示过滤掉。

iterable:是一个可迭代对象,如列表、元组、集合等。

filter()函数的返回结果是一个迭代器。

下面分别介绍filter()函数的使用方法和示例。

使用方法

filter()函数的使用方法与其他高阶函数类似,通常可以使用以下三种方式进行调用:

1. 使用lambda表达式

lambda函数是Python中的一种匿名函数,可以根据需要动态地生成一个函数。使用lambda表达式可以使代码更加简洁。

例如:

arr = [1, 2, 3, 4, 5, 6]

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

print(list(result))

输出结果为:[2, 4, 6]

2. 使用普通函数

除了使用lambda表达式,也可以编写普通的函数进行过滤。

例如:

def even(x):

    return x % 2 == 0

arr = [1, 2, 3, 4, 5, 6]

result = filter(even, arr)

print(list(result))

输出结果为:[2, 4, 6]

3. 使用列表解析

与map()函数类似,也可以使用列表解析完成对序列的过滤。

例如:

arr = [1, 2, 3, 4, 5, 6]

result = [x for x in arr if x % 2 == 0]

print(result)

输出结果为:[2, 4, 6]

示例

下面通过几个示例来演示filter()函数的使用方法。

1. 过滤列表中的偶数

arr = [1, 2, 3, 4, 5, 6]

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

print(list(result))

输出结果为:[2, 4, 6]

这个例子中使用了lambda表达式,对列表中的偶数进行了过滤。

2. 过滤列表中的负数

arr = [-1, 2, -3, 4, -5, 6]

result = filter(lambda x: x > 0, arr)

print(list(result))

输出结果为:[2, 4, 6]

这个例子也使用了lambda表达式,对列表中的负数进行了过滤,只保留了正数。

3. 过滤列表中的空字符串

arr = ['', 'hello', '', 'world', '', ' ']

result = filter(lambda x: x.strip() != '', arr)

print(list(result))

输出结果为:['hello', 'world', ' ']

这个例子中使用了lambda表达式和字符串的方法strip(),对列表中的空字符串进行了过滤。

总结

filter()函数可以方便地对序列进行筛选,过滤出符合设定条件的元素,并返回一个新的序列。通常可以使用lambda表达式、普通函数或列表解析等方式进行调用。本文通过几个例子演示了filter()函数的使用方法,希望对大家有所帮助。