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))

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""