使用 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)
广告