найти наименьший общий знаменатель для списка дробей в python - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть список дробей

from fractions import Fraction

fractions_list=[Fraction(3,14),Fraction(1,7),Fraction(9,14)]

На выходе должен быть список с числителями для каждой дроби, а затем знаменатель для всех них в конце и в простейшей форме. Для приведенного выше примера результат (3/14, 2/14, 9/14) будет представлен следующим образом:

[3,2,9,14]

Есть ли элегантное решение для этого? Все, что я могу придумать, включает в себя множество промежуточных списков для хранения некоторых переменных и ужасного масштабирования.

1 Ответ

0 голосов
/ 06 апреля 2020
import numpy as np

fractions_list=[Fraction(3,14),Fraction(1,7),Fraction(9,14)]

lcm = np.lcm.reduce([fr.denominator for fr in fractions_list])

vals = [int(fr.numerator * lcm / fr.denominator) for fr in fractions_list]
vals.append(lcm)
...