内置函数 map 和 filter 在 Python 中的应用
Python 的 map 和 filter 内置函数是非常常用的函数,它们主要用于对数据进行筛选和转换。 map 和 filter 函数都是 Python 内置的高阶函数,这意味着它们接受函数作为参数并返回结果。下面我们分别简单介绍一下 map 和 filter 函数在 Python 中的应用。
1. map 函数的应用
map 函数可以对一个序列中的每个元素应用一个函数,并返回一个新的列表,其中包含每个元素应用函数后的结果。其语法为:map(function, iterable, ...)
def square(n):
return n ** 2
numbers = [1, 2, 3, 4, 5]
squares = map(square, numbers)
print(list(squares)) # Output: [1, 4, 9, 16, 25]
上述代码中,我们定义了一个名为 square 的函数,然后通过 map 函数将该函数应用到一个列表中的每个元素(也就是 numbers 列表中的每个数),返回新的列表 squares。
map 函数还可以接受多个可迭代对象,如:
def add(a, b):
return a + b
numbers = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
sums = map(add, numbers, squares)
print(list(sums)) # Output: [2, 6, 12, 20, 30]
上述代码中,我们定义了一个名为 add 的函数,然后通过 map 函数将该函数应用到两个列表中的相同位置上的元素,返回新的列表 sums。
2. filter 函数的应用
filter 函数可以对一个序列中的每个元素应用一个布尔表达式,并返回一个新的列表,其中包含使布尔表达式返回 True 的元素。其语法为:filter(function, iterable)
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # Output: [2, 4]
上述代码中,我们定义了一个名为 is_even 的函数,然后通过 filter 函数将该函数应用到列表中的每个元素,返回满足函数条件的元素组成的新的列表 even_numbers。
filter 函数还可以直接使用 lambda 表达式,如:
numbers = [1, 2, 3, 4, 5] even_numbers = filter(lambda n: n % 2 == 0, numbers) print(list(even_numbers)) # Output: [2, 4]
上述代码中,我们使用了 lambda 表达式来替代函数 is_even,其功能与 is_even 函数完全一样。
综上所述,map 和 filter 函数是 Python 中非常方便的内置函数。我们可以使用 map 函数将一个函数应用于一个列表中的每个元素,并返回新的列表,也可以使用 filter 函数将一个布尔表达式应用于列表中的元素,并返回满足条件的元素组成的新的列表。深入了解 map 和 filter 函数可以帮助我们写出更加简洁且高效的 Python 代码。
