过滤函数(filter)
过滤函数(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()函数的使用方法,希望对大家有所帮助。
