對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