2013-06-15 6 views
13

초기 값으로부터 일련의 계산 결과를 얻고 싶습니다. 하나의 인자를 가진 function_list파이썬에서 일련의 함수를 계산하십시오.

def function_composition(function_list, origin): 
    destination = origin 
    for func in function_list: 
     destination = func(destination) 
    return destination 

각 기능으로 : 나는 실제로 다음 코드를 사용하고 있습니다.

파이썬 표준 라이브러리 또는 더 나은 방법 (예 : lambdas 사용) 비슷한 기능이 있는지 알고 싶습니다.

+3

이것은 FP 스타일의 기능 응용 프로그램입니다. 예 : 하스켈'foldr ($) 7 ((+1), (^ 3), (* 2)]는'2745'로 평가됩니다. '($)'는 단순히'\ f x -> f x'입니다. 따라서'reduce'와'lambda'는 파이썬과 동등합니다. –

+3

코드가 명확하고 간결합니다. 나는 그것을 압축하고 압축 할 이유가 없다고 주장 할 것입니다. –

+0

@DonStewart : 사실 그것은 기능 구성의 배입니다. –

답변

18

전화를 거는 동안 접지하십시오.

destination = reduce((lambda x, y: y(x)), function_list, origin) 
+4

3.x에서'reduce'는'functools.reduce()'입니다. –

+2

나는 람다 :'destination = reduce ((lambda x, y : y (x)), function_list, origin)에서 변수를 뒤 바꿔야했다. 이제 작동합니다. – rob

+1

이것이 이것을하는 더 나은 방법이라고 정말로 생각하십니까? –

관련 문제