Python 中的 filter() 方法和 Lambda 函数

Vaibhav Vaibhav 2022年5月17日
Python 中的 filter() 方法和 Lambda 函数

通常,在处理数组、列表和元组等可迭代数据结构时,我们必须对它们执行过滤操作。

过滤是指取出与特定条件匹配的值。可以通过使用 for 循环或 while 循环迭代可迭代数据结构值和值并检查元素是否满足条件来执行过滤。

由于这是一项常见任务,Python 编程语言有一个内置方法 filter()。这种方法需要一个函数来执行过滤。

一般来说,lambda 方法被考虑用于这项工作,因为它们易于编写。本文将展示如何在 Python 中同时使用 filter() 方法和 lambda 函数。

Python 中的 filter() 方法和 lambda 函数

filter 方法是 Python 编程语言中的内置方法,用于从满足特定条件的迭代中过滤元素。函数表示条件,函数返回 True 的值将被考虑在结果中。

filter() 接受两个参数;一个用于过滤的函数,它返回一个布尔值和一个可迭代的对象,例如列表或元组。filter() 方法是一个迭代器或 filter 对象。

我们必须使用 list() 方法或 tuple() 方法将迭代器转换为列表或元组。Python 中的 lambda 函数是内联函数和匿名函数。

这些函数可以与 filter 方法一起使用。

lambda 函数具有以下语法。

lambda < parameters > : < expression >

参数应以逗号分隔,并且表达式应返回布尔结果(TrueFalse)。

让我们通过一个简单的示例来了解如何将两者结合使用。请参阅以下 Python 代码。

array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x: x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)

输出:

Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 4, 15, 7, 8, 10]

上面的 Python 代码过滤了整数列表 array 中小于或等于 20 的所有值。

列表的每个值都传递给 lambda 函数。如果它返回 True,则将该值添加到结果中;否则,不是。

一旦在迭代器中获得结果,就会使用内置的 list() 方法将其转换为列表。最后,两个数组都打印到控制台。

例子

以下是一些示例,以了解 filter() 方法和 lambda 函数的用法。

从整数列表中过滤所有偶数

array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x: x % 2 == 0, array))
print("Old Array:", array)
print("New Array:", new_array)

输出:

Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [2, 4, 66, 88, 100]

从整数列表中过滤所有奇数

array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x: x % 2 == 1, array))
print("Old Array:", array)
print("New Array:", new_array)

输出:

Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [1, 3, 5, 77, 99]

从字符串列表中过滤所有长度为 5 的字符串

array = [
    "hello",
    "python",
    "world",
    "walking",
    "sleep",
    "shelter",
    "food",
]
new_array = list(filter(lambda x: len(x) == 5, array))
print("Old Array:", array)
print("New Array:", new_array)

输出:

Old Array: ['hello', 'python', 'world', 'walking', 'sleep', 'shelter', 'food']
New Array: ['hello', 'world', 'sleep']

从整数列表中过滤 [10, 20] 范围内的所有数字

array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x: 10 <= x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)

输出:

Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 15, 10]
作者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

相关文章 - Python Function

相关文章 - Python Lambda