Python高阶函数:map()、filter()和reduce()的用法
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是返回True或False的函数,它用来判断可迭代对象中的每一个元素是否满足条件,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中常用的高阶函数,它们可以极大地简化程序的编写,并且可以使代码更加清晰、简洁。熟练地掌握这三个函数可以使程序员的编写效率得到极大的提高。
