728x90
반응형
질문 : Python 람다가 유용한 이유는 무엇입니까?
파이썬 람다를 알아 내려고합니다. 람다는 실생활에서 잊혀져 야하는 "흥미로운"언어 항목 중 하나입니까?
필자는 그것이 필요할 수있는 몇 가지 극단적 인 경우가 있다고 확신하지만, 모호함을 감안할 때 향후 릴리스에서 재정의 될 가능성 (다양한 정의에 기반한 내 가정) 및 감소 된 코딩 명확성-그럴 경우 피할 수 있습니까?
이것은 C 유형의 오버플로 (버퍼 오버플로)를 상기시킵니다. 상위 변수를 가리키고 다른 필드 값을 설정하기 위해 오버로딩합니다. 일종의 기술 쇼맨십처럼 느껴지지만 유지 보수 코더는 악몽입니다.
답변
람다 함수 에 대해 이야기하고 있습니까? 처럼
lambda x: x**2 + 2*x - 5
이러한 것들은 실제로 매우 유용합니다. 파이썬은 함수형 프로그래밍이라는 프로그래밍 스타일을 지원합니다. 여기서 함수를 다른 함수에 전달하여 작업을 수행 할 수 있습니다. 예:
mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
mult3
을 [3, 6, 9]
로 설정합니다. 원래 목록에서 3의 배수 인 요소는 다음보다 짧습니다 (그리고 더 명확 할 수 있습니다).
def filterfunc(x):
return x % 3 == 0
mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])
물론이 특별한 경우에는 목록 이해와 동일한 작업을 수행 할 수 있습니다.
mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]
(또는 range(3,10,3)
),하지만 목록 이해력을 사용할 수없고 람다 함수가 무엇인가를 작성하는 가장 짧은 방법 일 수있는 더 복잡한 사용 사례가 많이 있습니다.
- 다른 함수에서 함수 반환
이것은 종종 Python의 데코레이터와 같은 함수 래퍼를 만드는 데 사용됩니다.>>> def transform(n): ... return lambda x: x + n ... >>> f = transform(3) >>> f(4) 7
- 반복 가능한 시퀀스의 요소를
reduce()
>>> reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9]) '1, 2, 3, 4, 5, 6, 7, 8, 9'
- 대체 키로 정렬
>>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)) [5, 4, 6, 3, 7, 2, 8, 1, 9]
정기적으로 람다 함수를 사용합니다. 익숙해지는 데 시간이 좀 걸렸지 만 결국 언어의 매우 가치있는 부분이라는 것을 알게되었습니다.
출처 : https://stackoverflow.com/questions/890128/why-are-python-lambdas-useful
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬의 print 기능을 화면에 강제로 출력하는 방법 (0) | 2021.11.02 |
---|---|
Python logger가 로그 파일 외에도 모든 메시지를 stdout에 출력하도록 만들기 (0) | 2021.11.01 |
파이썬에서 명시 적으로 메모리를 해제하는 방법 (0) | 2021.10.26 |
파이썬에서 코드 블록을 주석 처리하는 방법 (0) | 2021.10.26 |
Python보다 C ++에서 stdin에서 행을 읽는 것이 훨씬 느린 이유 (0) | 2021.10.26 |