Python高阶函数:map()、filter()、reduce()等实现函数式编程
Python是一种多范式语言,具有面向对象、函数式、命令式、过程式等特性。在Python中,可以使用高阶函数实现函数式编程。高阶函数是指接收一个函数作为参数或返回一个函数的函数。其中,Python内置的高阶函数有map()、filter()、reduce()等。
1.map()
map()函数用于对可迭代对象中的每个元素应用一个函数,返回一个可迭代对象,其中包含应用该函数后的每个元素的结果。map()的语法如下:
map(function, iterable, ...)
其中,function为要应用的函数,iterable为可迭代对象。如果有多个可迭代对象,则对应位置的元素作为function的参数。示例如下:
def square(x):
return x ** 2
lst = [1, 2, 3, 4]
result = map(square, lst)
print(list(result)) # 输出 [1, 4, 9, 16]
2.filter()
filter()函数用于从可迭代对象中过滤出符合条件的元素,返回一个可迭代对象。filter()的语法如下:
filter(function, iterable)
其中,function为用于过滤元素的函数,iterable为可迭代对象。该函数返回值为True的元素会被保留下来。示例如下:
def even(x):
return x % 2 == 0
lst = [1, 2, 3, 4]
result = filter(even, lst)
print(list(result)) # 输出 [2, 4]
3.reduce()
reduce()函数用于对可迭代对象中的元素进行累积操作,返回一个单一的结果。reduce()的语法如下:
reduce(function, iterable[, initializer])
其中,function为两个参数的函数,用于对累积值和序列中的元素进行运算;iterable为可迭代对象;initializer为可选的初始值。如果不提供initializer,则默认为序列中的 个元素。示例如下:
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中还有其他一些高阶函数,比如sorted()、max()、min()等。这些函数都是具有函数式编程特性的高阶函数,可以使代码更加简洁、清晰、易于理解。
