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

Python filter()函数的用法及举例

发布时间:2023-05-26 19:25:45

Python filter() 函数是内置函数,通过为序列(可迭代对象)中的每个元素调用一个布尔函数来过滤序列。这个布尔函数接受序列中的每个元素作为参数,并基于预定义的条件来判断元素是否应该被保留或丢弃。最后,它返回一个由被保留元素组成的序列。

filter() 函数可以使用以下语法调用:

filter(function, iterable)

其中,function 是一个返回布尔值的函数,iterable 是一个 Python 序列。它可以是列表、元组、集合、字符串或某些其他序列类型。

因此,filter() 函数根据给定的 function 的条件过滤 iterable 中的元素,并返回一个新的序列(类型与 iterable 同样)。

举例说明:

# 求列表中的偶数
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, my_list))
print(even_numbers)   # [2, 4, 6, 8]

在上面的代码示例中,首先创建了一个包含数字的列表 my_list,然后使用 lambda 函数来定义一个测试条件(即:是否为偶数)。这个 lambda 函数接受列表中的每个元素作为参数,并返回布尔值(即 True 或 False)。

接下来,将 filter() 函数应用于这个列表和测试条件。它遍历列表中的每个元素,并使用 lambda 函数对每个元素进行测试。仅当测试为 True 时,该元素才被认为是“通过”的(即保留)。最后,它返回所有通过测试的元素的列表。

为了使 filter() 函数返回值可读性更好,需要将它转换为列表,以便能够将它存储在变量 even_numbers 中并打印它。

下面再看一个例子,使用 filter() 函数将一个字符串列表中的所有元素转换为大写:

# 将字符串转换为大写
my_list = ["Hello", "World", "Python", "Filter"]
upper_list = list(filter(lambda x: x.isupper(), my_list))
print(upper_list)   # ["Hello", "World", "Filter"]

在上面的代码示例中,首先创建了一个包含字符串的列表 my_list,然后使用 lambda 函数定义一个测试条件(即:字符串是否为大写)。这个 lambda 函数接受列表中的每个元素作为参数,并返回布尔值(即 True 或 False)。

接下来,将 filter() 函数应用于这个列表和测试条件。它遍历列表中的每个元素,并使用 lambda 函数对每个元素进行测试。仅当测试为 True 时,该元素才被认为是“通过”的(即保留)。最后,它返回所有通过测试的元素的列表。

为了使 filter() 函数返回值可读性更好,需要将它转换为列表,以便能够将它存储在变量 upper_list 中并打印它。

总结:

- filter() 函数是 Python 内置函数,用于过滤序列中的元素。

- filter() 函数接受一个布尔函数和一个可迭代的 Python 序列作为参数,并返回一个由满足布尔函数条件的元素组成的新序列。

- filter() 函数可以与 lambda 表达式一起使用来定义测试条件,也可以使用已经定义的函数。

- filter() 函数返回的值需要转换为列表等序列类型,以便更好地使用和打印。