reduce
python3中, reduce不再是直接的内置函数, 而是移到了模块functiontools
内.
reduce
的作用, 就是把一个可迭代序列的每一元素应用到一个具有两个参数的函数中.
例如:
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
就是计算((((1+2)+3)+4)+5)
from functools import reduce
def f(x, y):
print("x=", x, "y=", y)
return x + y
"""
参数1: 具有两个参数的函数
参数1:前面计算过的值 参数2:从可迭代类型中取得的新的值
参数2: 可迭代类型的数据
参数3: x的初始值, 默认是0
"""
r = reduce(f, [1, 2, 3, 4, 5], 0)
print(r) # 15
使用reduce
计算阶乘
from functools import reduce
def factorial(n):
"""计算n的阶乘
:param n:
:return:
"""
return reduce(lambda x, y: x * y, range(1, n + 1), 1)
print(factorial(5))
print(factorial(6))
print(factorial(7))