reduce函数作用就是把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce函数把结果继续和序列的下一个元素做累积计算,跟递归有点相似。
reduce函数参数主要包括两个,一个是以上说的作用函数,另外一个是sequence 序列。还有一个是可选参数,initial 初始值。
例如定义一个 func(x,y) 函数,执行 x * y 相乘,reduce 传入序列 [1,2,3,4,5,6] , 执行过程为 1 * 2 结果为2,然后把这结果继续和3相乘,得出6,然后 6再和4相乘,如此类推,最后结果为720
from functools import reduce
def func(x,y):
print(x,y)
return x * y
print(reduce(func,[1,2,3,4,5,6]))
当有 initial 初始值为2时: 首先是2和序列里的1相乘,得出2,再和序列的第2个元素2相乘,得出4,如此类推,最后结果为1440
from functools import reduce
def func(x,y):
print(x,y)
return x * y
print(reduce(func,[1,2,3,4,5,6],2))
最后,顺带另外一个方法知识点,也可以通过匿名函数去简写这表达式函数的运算。
from functools import reduce
# def func(x,y):
# print(x,y)
# return x * y
# print(reduce(func,[1,2,3,4,5,6],2))
print(reduce(lambda x,y :x * y,[1,2,3,4,5,6]))