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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM