Python中的Filter()函数用法和示例
什么是Filter()函数?
Filter()函数是Python内置的函数之一。它接收一个函数和一个可遍历对象作为输入,返回一个迭代器,其中包含可遍历对象中符合函数要求的元素。也就是说,Filter()函数将对可遍历对象的每个元素依次调用传入的函数,若该元素符合函数要求,则该元素会被添加到一个返回的迭代器中。
Filter()函数的语法如下:
filter(function, iterable)
其中,function是一个返回布尔值的函数,它接收可遍历对象iterable中的元素,如果返回True,则该元素将被包含在返回的迭代器中。iterable是可以遍历的对象(列表、元组、集合、字符串等等)
下面我们来看几个例子:
例1:过滤出列表中的偶数
我们定义filter_num()函数,该函数接收一个整数,如果该整数为偶数,则返回True,否则返回False。我们将该函数作为过滤函数传入filter()函数,filter()函数将遍历列表arr中的每个元素,对每个元素执行filter_num()函数,如果返回True,则该元素会被加入到返回的迭代器中。
代码如下:
def filter_num(num):
if num%2 == 0:
return True
else:
return False
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(filter_num, arr)
for i in result:
print(i)
输出结果:
2 4 6 8 10
例2:使用Lambda表达式通过Filter()函数过滤出字符串中含有某个字母的元素
代码如下:
arr = ['apple', 'banana', 'orange', 'watermelon', 'grape']
result = filter(lambda x: 'a' in x, arr)
for i in result:
print(i)
输出结果:
apple banana orange watermelon
可以看到,上述代码定义了一个Lambda表达式,该表达式要求元素中必须包含字母‘a’。Filter()函数将对列表arr中的每个元素执行Lambda表达式,如果Lambda表达式返回True,则该元素将被加入到返回的迭代器中。
例3:使用Filter()函数和sum()函数计算列表中的偶数的和
代码如下:
def filter_num(num):
if num%2 == 0:
return True
else:
return False
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(filter_num, arr)
print(sum(result))
输出结果:
30
可以看到,上述代码先使用Filter()函数过滤出列表中的偶数,并将结果赋值给result。接着,使用sum()函数计算result中的所有元素的和,最终输出结果为30。
Filter()函数的使用非常灵活,可以根据实际需求编写过滤函数和Lambda表达式,从而实现各种过滤功能。需要注意的是,Filter()函数返回的是一个迭代器,如果要使用它的值,需要将它转换为列表或元组。
