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

内置函数 map 和 filter 在 Python 中的应用

发布时间:2023-05-28 13:14:06

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 代码。