유리수 목록이 있다고 가정합니다. 우리는 reduce 함수를 사용하여 그들의 제품을 찾아야 합니다. reduce() 함수는 두 개의 인수가 있는 함수를 왼쪽에서 오른쪽으로 객체 목록에 누적하여 적용합니다.
따라서 입력이 분수 =[(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의 끝에 (분자, 분모) 쌍 f에서 새로운 분수 개체 삽입
- t :=reduce(함수 func(x, y)가 있는 분수는 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)