본문 바로가기
파이썬

파이썬 함수형 프로그래밍의 'fold'함수에 해당하는 'pythonic'은 무엇입니까?

by º기록 2021. 2. 19.
반응형

Haskell에서 다음과 같은 것을 달성하는 가장 관용적 인 방법은 무엇입니까?

foldl (+) 0 [1,2,3,4,5]
--> 15

또는 Ruby에서 이에 상응하는 것 :

[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15

분명히 Python은 위와 같이 fold의 구현 인 reduce 함수를 제공하지만, 'pythonic'프로그래밍 방식은 lambda 를 피하는 것이라고 들었습니다. 용어 및 고차 함수, 가능한 경우 목록 이해를 선호합니다. 따라서 reduce 함수가 아니거나 reduce 가 이것을 달성하는 관용적 방법 인 Python에서 목록 또는 목록과 유사한 구조를 접는 선호하는 방법이 있습니까? ?

 

해결 방법

 


def product(xs):
    return reduce(operator.mul, xs, 1)

reduce 는 실제로 Haskell 용어로 foldl 입니다. 접기를 수행하는 특별한 구문도없고, 내장 된 foldr 도 없으며, 실제로 비 연관 연산자와 함께 reduce 를 사용하는 것은 잘못된 스타일로 간주됩니다.

고차 함수를 사용하는 것은 매우 비단뱀 적입니다. 함수와 클래스를 포함하여 모든 것이 객체라는 파이썬의 원칙을 잘 활용합니다. 람다가 일부 Pythonistas에 의해 눈살을 찌푸리는 것은 맞지만, 대부분 복잡해지면 읽기가 쉽지 않기 때문입니다.

 

참조 페이지 https://stackoverflow.com/questions/10366374

 

 

반응형

댓글