python一行代码求阶乘或求和(reduce函数的使用)
对1~1000求阶乘
import math
def sum(self,smallNumber:int,bigNumber:int) -> int
return reduce(lambda x,y:x*y, range(smallNumber,bigNumber+1))
上面的xy可以自由换成其他表达式,如 x+y、x-y、x**2+y、2x+5*y 等等
range(1,1001)表示生成1到1000的连续整数列表(List)。
reduce(functionA,iterableB),functionA为需要两个变量的函数,并返回一个值。iterableB为可迭代变量,如List等。reduce函数将B中的元素从左到右依次传入函数A中,再用函数A返回的结果替代传入的一个参数,反复执行,则可将B reduce成一个单值。在此,是将1到1000的连续整数列表传入lambda函数并用两个数的积替换列表中的数,实际的计算过程为:(...((1×2)×3)×4)×...×1000),最后的结果即1000的阶乘。
g = lambda x,y: x*y
等价于
def f(x,y):
return x*y
比如
>>>f(4,5)
20
>>>g(4,5)
20
结果一致,在reduce里面直接用函数名代替 lambda 表达式即可,如下
>>> reduce(add, [4,5])
9
>>> reduce(lambda x, y: x+y, [4,5]) # 使用 lambda 匿名函数
9