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

Python高阶函数:map()、filter()和reduce()的用法

发布时间:2023-05-21 18:40:42

Python是一门支持函数式编程的语言,其中的高阶函数map()、filter()和reduce()是函数式编程中常用的函数。

## map()函数

map()函数的作用是将一个函数作用于一个序列(列表、元组等),并返回一个新序列。

map()函数的语法如下:

map(function, iterable, ...)

其中,function是对序列中的每个元素所要执行的函数,iterable是要遍历的序列。

下面以将一个列表中的每个数都平方的例子来说明map()函数的用法。

def square(x):
    return x ** 2

lst = [1, 2, 3, 4]

new_lst = list(map(square, lst))

print(new_lst) # 输出 [1, 4, 9, 16]

## filter()函数

filter()函数的作用是过滤出满足某个条件的元素,并返回一个新的序列。filter()函数会接收一个函数和一个可迭代的序列,返回的序列中只包含满足条件的元素。

filter()函数的语法如下:

filter(function, iterable)

其中,function是返回TrueFalse的函数,它用来判断可迭代对象中的每一个元素是否满足条件,iterable是要遍历的序列。

下面以过滤出一个列表中所有的偶数为例子来说明filter()函数的用法。

def is_even(x):
    return x % 2 == 0

lst = [1, 2, 3, 4]

new_lst = list(filter(is_even, lst))

print(new_lst) # 输出 [2, 4]

## reduce()函数

reduce()函数在Python 3中已经不再是内置函数,需要从functools模块中导入。

reduce()函数的作用是将一个序列(列表、元组等)中的所有元素依次累加、累减、累乘、累除,并返回最终结果。

reduce()函数的语法如下:

reduce(function, iterable[, initializer])

其中,function是一个有两个参数的函数, 个参数为上一次累加的结果,第二个参数为当前要累加的值;initializer是初始的累加值。

下面以将一个列表中所有数相乘为例子来说明reduce()函数的用法。

from functools import reduce

def multiply(x, y):
    return x * y

lst = [1, 2, 3, 4]

result = reduce(multiply, lst)

print(result) # 输出 24

## 总结

map()filter()reduce()是Python中常用的高阶函数,它们可以极大地简化程序的编写,并且可以使代码更加清晰、简洁。熟练地掌握这三个函数可以使程序员的编写效率得到极大的提高。