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