reduce()函数:是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
栗子1: 求x和y的和:
from functools import reduce # Python3 中必需先导入reduce
def add(x, y):
return x + y
a = [1, 2, 3, 4, 5]
L1 = reduce(add, a)
print(L1)
调用 reduce(f, [1, 2, 3, 4, 5])时,reduce函数将做如下计算:
先计算头两个元素:f(1, 2),结果为3;
再把结果和第3个元素计算:f(3, 3),结果为6;
再把结果和第4个元素计算:f(6, 4),结果为10;
再把结果和第5个元素计算:f(10, 5),结果为15;
由于没有更多的元素了,计算结束,返回结果15。
上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。
reduce()还可以接收第3个可选参数,作为计算的初始值。如把初始值设为100,计算:
L1 = reduce(add, a, 100)
结果将变为115,因为第一轮计算是:101
栗子2: 利用recude()来求积:
输入:[2, 4, 5, 7, 12]
from functools import reduce # Python3 中必需先导入reduce
def prod(x, y):
return x*y
print(reduce(prod, [2, 4, 5, 7, 12]))
结果为: 3360
大家加油!
学习网址: https://www.imooc.com/code/6050