使用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 =(52657)/(389122)= 2100/5184 = 175/432.
要解决此问题,我们将按照以下步骤进行 –
- fracs:=新列表
- 对于每个f in frac,执行以下操作
- 从(numerator,denominator)对f插入一个新的分数对象在fracs的末尾
- t:=使用函数func(x,y)返回x * y来减少fracs
- 返回(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)