python 람다(lambda) 함수

람다(lambda)함수 정의

  • 일반적인 함수를 한 줄의 문으로 정의할 수 있는 새로운 함수 정의 리터럴
  • 일회성으로 활용할 함수 정의할 때 주로 사용
  • :뒤에는 식만 올 수 있음
  • 람다 함수도 하나의 객체임
1
2
f = lambda x: x + 1
print f(1)
  1. 인수가 두 개 있는 람다 함수를 지니는 변수 지정 및 함수 호출

    1
    2
    g = lambda x,y: x + y
    print g(1,2)
  2. 기본 인수를 지니는 람다 함수 정의

    1
    2
    3
    g = lambda x, inc=1: x+inc
    print g(10) # inc기본 인수 값으로 1사용
    print g(10, 5)
  3. 가변 인수를 지니는 람다 함수 정의

    1
    2
    vargs = lambda x, *args: args #args가 리턴됨
    print vars(1,2,3,4,5)

람다 함수 사용하기

  • 일반 함수 사용

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def f1(x):
    return x*x + 3*x - 10

    def f2(x):
    return x*x*x

    def g(func):
    return [func(x) for x in range(-10, 10)]

    print g(f1)
    print g(f2)
  • 람다 함수 사용

    1
    2
    3
    4
    5
    def g(func):
    return [func(x) for x in range(-10, 10)]

    print g(lambda x: x*x + 3*x - 10)
    print g(lambda x: x*x*x)

람다 함수 활용

  • map, filter, reduce 내장 함수
  1. map 내장 함수

    • map(function, seq): seq의 원소를 차례로 돌면서 function에 적용한 결과를 seq의 자료형으로 반환

      1
      2
      3
      4
      5
      def f(x):
      return x * x
      X - [1,2,3,4,5]
      Y = map(f, X)
      print Y
    • map과 람다 함수를 동시에 사용 - 가장 추천

      1
      2
      X = [1,2,3,4,5]
      print map(lambda x: x * x, X)
  2. filter 내장 함수

    • seq자료형이 지닌 각 원소값에 대해 function에 적용한 결과가 참인 원소값들만을 동일 시퀀스 자료형으로 반환
      1
      print filter(lambda x: x>2, [1,2,3,45])
  3. reduce 내장 함수

    • reduce(function, seq[,initial])
    • seq자료형이 지닌 각 원소값에 대해 function함수를 적용하면서 하나의 값으로 매핑
    • 첫번째 인자(function)는 반드시 두 개의 인자(ex. x,y)를 받아야한다.
      • seq의 각 원소값들이 차례로 y에 들어간다
      • 함수가 수행된 값은 차례대로 x에 들어간다
    • 추가적으로 제공가능한 세번재 인자인 initial은 첫번째 단계에서 x에 할당할 초기값으로 사용된다
      1
      2
      print reduce(lambda x, y: x + y, [1,2,3,4,5])
      print reduce(lambda x, y: x + y, [1,2,3,4,5], 1000)
Comments