使用 reduce 函式查詢有理數乘積的 Python 程式


假設我們有一個有理數列表。我們必須使用 reduce 函式查詢它們的產品。reduce() 函式將帶有兩個引數的函式從左到右累積應用於物件列表。

因此,如果輸入類似 fractions = [(5,3),(2,8),(6,9),(5,12),(7,2)], 則輸出將為 (175, 432) 因為 5/3 * 2/8 * 6/9 * 5/12 * 7/2 = (5*2*6*5*7)/(3*8*9*12*2) = 2100/5184 = 175/432。

為了解決這個問題,我們將遵循以下步驟 −

  • fracs := 一個新列表
  • 對 frac 中的每個 f 執行以下操作
    • 在 fracs 末尾插入來自 (numerator, denominator) 對 f 的新分數物件
  • t := reduce(fracs with function func(x, y) returns x*y)
  • 返回 (t 的分子, t 的分母) 對

示例

讓我們看看以下實現來獲得更好的理解

from fractions import Fraction
from functools import reduce

def solve(frac):
   fracs = []
   for f in frac:
      fracs.append(Fraction(*f))

   t = reduce(lambda x, y: x*y, fracs)
   return t.numerator, t.denominator

frac = [(5,3),(2,8),(6,9),(5,12),(7,2)]
print(solve(frac))

輸入

[(5,3),(2,8),(6,9),(5,12),(7,2)]

輸出

(175, 432)

更新於:12-Oct-2021

373 次瀏覽

開啟你的 職業生涯

完成課程並獲得認證

開始體驗
廣告
© . All rights reserved.