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
posted on 2021-06-09 20:00  雾恋过往  阅读(1114)  评论(0编辑  收藏  举报

Live2D