使用 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)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP