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

Python的filter()函数简介及实例

发布时间:2023-06-11 05:46:22

Python是一种强大的编程语言,它提供了许多内置函数,其中包括一个非常有用的函数- filter()。

filter() 函数可以根据指定的条件过滤掉一个序列中的元素,返回一个新的序列。

filter() 函数的语法如下:

filter(function, iterable)

其中,function 是一个函数,表示用于判断 iterable 序列中每个元素是否符合条件的函数。

iterable 被过滤的序列,可以是 list、tuple、str、set、dict、range 等序列类型。

下面是一个简单的示例程序,演示如何使用 filter() 函数对列表中的元素进行过滤:

#filter()函数示例1:过滤奇数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result1 = filter(lambda x: x%2!=0, numbers)

print(list(result1))   #输出:[1, 3, 5, 7, 9]

在上述示例程序中,使用 lambda 表达式定义判断条件,即判断列表中每个元素是否为奇数,然后将结果存储到 result1 序列中,并通过print()语句将 filter() 函数返回的结果转换为列表类型输出。此时输出为 [1, 3, 5, 7, 9],即符合过滤条件的所有奇数。

接下来看一个更复杂的示例程序,演示如何使用 filter() 函数对列表中的对象元素进行过滤,即列表中存储的是对象。

#filter()函数示例2:过滤对象

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def __repr__(self):

        return 'Person(name=%s, age=%d)' % (self.name, self.age)

persons = [Person('jack', 20), Person('jane', 22), Person('allen', 25), Person('lucy', 30), Person('jim', 35)]

result2 = filter(lambda p:p.age>=25, persons)

print(list(result2))  #输出:[Person(name=allen, age=25), Person(name=lucy, age=30), Person(name=jim, age=35)]

在上述示例程序中,首先定义一个 Person 类,表示一个人的对象,包括姓名和年龄两个属性。接下来创建一个对象列表,其中存储了不同年龄的人员信息,通过 lambda 函数判断出年龄大于等于 25 岁的人员信息,并将结果存储到 result2 序列中,并通过 print() 函数输出结果。

总结:

filter() 函数是 Python 中的一个非常有用的函数,它可以根据指定的条件过滤一个序列中的元素,返回一个新的序列。同时,filter() 函数支持使用 lambda 表达式以及对象对象属性进行过滤操作,提供了代码逻辑的灵活性和复杂性。对于使用 Python 进行序列处理和过滤的应用场景,filter() 函数无疑是一个非常有力的支持和帮助。