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

Python中的Filter()函数用法和示例

发布时间:2023-05-22 02:45:09

什么是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()函数返回的是一个迭代器,如果要使用它的值,需要将它转换为列表或元组。