1 minute read

1. Lambda

1. Lambda란 무엇인가

람다 함수는 다음과 같은 특징을 같는다.

  1. 람다 함수는 이름을 지정하지 않아도 된다.
  2. 함수의 입력 변수의 이름 또한 필요 없다.
  3. 두 개 이상의 입력을 받는 함수는 하나의 입력을 받아 또다른 함수를 출력하는 함수로 다시 쓸 수 있다. 람대 함수를 잘 활용하면 코드를 상당한 수준으로 함축시켜서 깔끔하게 표현할수 있다. (커링)
# 함수의 이름이 정해져 있지 않다.
(lambda x,y: x + y)(10, 20)



2. map 함수 사례

list(map(lambda x: x ** 2, range(10)))     # 파이썬 2 및 파이썬 3
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

map 함수는 iterable한 객체를 탐색하면서 람다함수의 결과값들로 이루어진 새로운 iterable한 객체를 반환한다.

3. filter 함수 사례

filter(lambda x: x < 10, range(1000)) 
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  

filter 함수는 iterable한 객체를 탐색하면서 람디힘수의 결과가 True인것으로만 이루어진 값들의 iterable한 객체를 반환한다. 위의 예제는 문자열을 탐색하면서 모든 자릿수를 더하여 반환한다.

4. reduce 함수 사례

from functools import reduce
def solution(n):
    return int(reduce(lambda x, y: int(x) + int(y)  , str(n)))

reduce 함수는 iterable한 객체를 탐색하면서 하나의 값이 출력되도록 설계한다. 위의 예제는 문자열을 탐색하면서 모든 자릿수를 더하여 반환한다.

5. currying를 적용한 lambda 함수

computation = lambda x: lambda y: lambda z: lambda w: x + y - z * w
computation(3)(3)(3)(3)

람다함수의 특징중 3번째인 ‘두 개 이상의 입력을 받는 함수는 하나의 입력을 받아 또다른 함수를 출력하는 함수로 다시 쓸 수 있다’를 활용하여 모듈화, 함수가 실행되기전 전처리등의 작업을 진행할수 있다. 위의 예제는 x, y, z, w를 인수로 받는 람다함수를 currying 하여 계산하는 예제이다.

Leave a comment