当前位置:首页 > Python > 正文

Python filter函数详解(零基础掌握filter函数的用法与实战)

Python 内置函数 中,filter() 是一个非常实用的工具,特别适合用于函数式编程Python场景。它可以帮助我们从一个可迭代对象(如列表、元组等)中“筛选”出满足特定条件的元素。本教程将从零开始,手把手教你如何使用 Python filter函数,即使你是编程小白,也能轻松上手!

什么是 filter 函数?

filter() 是 Python 的一个内置函数,用于过滤序列中的元素。它接收两个参数:

  • function:一个判断函数,返回 TrueFalse
  • iterable:一个可迭代对象(如列表、元组、字符串等)

函数会将 iterable 中的每个元素传入 function,如果返回 True,则保留该元素;否则丢弃。

Python filter函数详解(零基础掌握filter函数的用法与实战) filter函数  filter函数用法 Python内置函数 函数式编程Python 第1张

filter 函数的基本语法

filter(function, iterable)  

注意:filter() 返回的是一个 filter 对象(一种迭代器),通常我们需要用 list() 将其转换为列表以便查看结果。

简单示例:筛选偶数

假设我们有一个数字列表,想从中选出所有偶数:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def is_even(n):    return n % 2 == 0# 使用 filter 筛选偶数result = filter(is_even, numbers)# 转换为列表并打印print(list(result))# 输出: [2, 4, 6, 8, 10]  

使用 lambda 表达式简化代码

在实际开发中,我们经常用 lambda 表达式代替单独定义函数,使代码更简洁:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 使用 lambda 表达式even_numbers = list(filter(lambda x: x % 2 == 0, numbers))print(even_numbers)# 输出: [2, 4, 6, 8, 10]  

实战案例:过滤字符串列表

假设我们有一个名字列表,只想保留长度大于 4 的名字:

names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve']long_names = list(filter(lambda name: len(name) > 4, names))print(long_names)# 输出: ['Alice', 'Charlie']  

filter 与 None 的特殊用法

如果将 function 参数设为 Nonefilter() 会自动过滤掉所有“假值”(如 0None、空字符串、空列表等):

data = [0, 1, False, True, '', 'Hello', [], [1, 2]]truthy_values = list(filter(None, data))print(truthy_values)# 输出: [1, True, 'Hello', [1, 2]]  

小结

通过本教程,你已经掌握了 Python filter函数 的基本用法、常见场景以及与 lambda 表达式的结合技巧。作为 Python内置函数 之一,filter() 在数据清洗、条件筛选等任务中非常高效。

记住:如果你正在学习 函数式编程Python,那么 filter()map()reduce() 是你必须掌握的三大利器!

希望这篇关于 filter函数用法 的教程对你有帮助!动手试试吧~