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 >
参数应以逗号分隔,并且表达式应返回布尔结果(True
或 False
)。
让我们通过一个简单的示例来了解如何将两者结合使用。请参阅以下 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]