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

Python中filter()函数的用法和实例解析

发布时间:2023-06-12 23:33:29

Python中的filter()函数是一种内置函数,它可以筛选出列表中符合条件的元素,返回一个迭代器对象,也可以通过list()转换成列表对象。

filter()函数的定义为:filter(function, iterable),其中function为过滤函数,iterable为可迭代对象,例如列表、元组、字符串、range()函数等。过滤函数function需要返回一个布尔值,如果为True,则表示该元素符合条件,被过滤出来,否则不符合条件,被筛选掉。

下面是filter()函数的示例:

ages = [12, 18, 16, 20, 19, 21]

def adult(age):
    return age >= 18

adults = list(filter(adult, ages))
print(adults)  # 输出 [18, 20, 19, 21]

上面的例子中,ages列表包含了几个年龄,定义了一个adult()函数,功能是判断该年龄是否成年,adult()函数的返回值是一个布尔值。使用filter()函数,将adult()函数作为过滤函数,传递给filter()函数,用于筛选出ages列表中符合条件的年龄,被过滤出来,最终生成一个成年人的列表。

下面再看一个更复杂的例子:

students = [{'name': 'Tom', 'age': 18}, {'name': 'Jerry', 'age': 20}, {'name': 'Mike', 'age': 17}, {'name': 'Lucy', 'age': 19}]

adult_students = list(filter(lambda s:s['age'] >= 18, students))
print(adult_students)  # 输出 [{'name': 'Tom', 'age': 18}, {'name': 'Jerry', 'age': 20}, {'name': 'Lucy', 'age': 19}]

该示例中,使用了lambda表达式作为过滤函数,lambda表达式相当于一个匿名函数,用于筛选出年龄大于等于18岁的学生,并返回一个列表对象。示例中使用了字典的形式存储学生信息,可以使用字典的键值来访问特定的信息。

filter()函数也可以用于过滤字符串,例如:

string = 'Hello, World!'

def is_uppercase(char):
    return char.upper() == char

uppercase_letters = ''.join(list(filter(is_uppercase, string)))
print(uppercase_letters)  # 输出 'HW'

该示例中,使用了is_uppercase()函数作为过滤函数,判断字符是否为大写字母。将string字符串中符合条件的字符筛选出来,最终将结果拼接成一个新的字符串。

总结:filter()函数是一种很方便的过滤函数,和map()函数、reduce()函数一起构成了Python中的函数式编程模式,可以大大提高代码的简洁性和可读性。