Python的filter()函数简介及实例
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() 函数无疑是一个非常有力的支持和帮助。
