[python] lambda 람다 표현식

"lambda" [parameter_list] ":" expression

람다 표현식은 (때로 람다 형식(lambda forms)이라고 불립니다) 이름 없는 함수를 만드는 데 사용됩니다. 변환 함수의 코드가 긴 경우에는 함수를 선언하는 것이 낫겠지만, 짧은 경우에는 람다 표현식을 사용하면 더욱 간단 명료한 코드를 짤 수 있습니다. lamda 표현식 객체는 정의된 함수 객체처럼 작동합니다. 람다 표현식으로 만들어진 함수는 문장(statements)이나 어노테이션(annotations)을 포함할 수 없음에 주의해야 합니다.


🧩1. lamda 표현식

익명 함수 lambda a, b: a+b

  • lambda 키워드들 사용해서 작고 이름 없는 함수를 만들 수 있습니다.
  • 이 함수는 두 인자의 합을 돌려줍니다.
  • 람다 함수는 둘러싸는 스코프에 있는 변수들을 참조할 수 있습니다.
  • 다음 예는 n을 입력 받아 x(42) + n함수를 돌려주기 위해 람다 표현식을 사용합니다
def make_incrementor(n):
     return lambda x: x + n

f = make_incrementor(42)
f(0)
#출력된 값 42
f(1)
#출력된 값 43
  • 다른 용도는 작은 함수를 인자로 전달하는 것입니다
  • 다음 예는 key 에 대한 인자를 계산하는 함수에 람다 표현식이 사용되었습니다.
  • 2번째 인덱스 값[1]을 인자로 돌려주는 함수입니다.
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
pairs
#출력된 값 [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

🧩2. 일반 함수를 람다 표현식으로 변환

코드를 단순화할 수 있습니다.

  • 숫자를 받은 뒤 10을 더해서 반환하는 함수 plus_ten 일반적 형태 입니다.
def plus_ten(x):
    return x + 10

plus_ten(1)
#출력된 값 11
  • 이 plus_ten 함수를 람다 표현식으로 변환하면 아래와 같습니다.
  • 람다 표현식은 이름이 없는 함수이기 때문에 단독으로 호출할 수 없습니다.
  • 람다 표현식을 출력하려면 변수에 할당해 주어야 합니다.
plus_ten = lambda x: x + 10
plus_ten(1)
#출력된 값 11
  • 일반 함수와 람다 표현식의 인자 관계는 아래와 같습니다.
출처 : 코딩도장

🧩3. 람다 표현식 자체를 호출하기

(lambda 매개변수들: 식)(인수들)

  • 람다 표현식은 변수에 할당하지 않고 ( )(괄호)로 묶은 뒤에 다시 ( )를 붙이고 인수를 넣어서 호출할 수 있습니다.
(lambda x: x + 10)(1)
#출력된 값 11

🧩4. map() 함수에 람다 표현식 적용하기

map 함수의 인수 부분에서 간단하게 만들기 위해서 lamda 표현식을 사용합니다.

  • 일반적 함수를 이용하여 숫자를 받은 뒤 10을 더해서 반환하는 함수 plus_ten에 인자로 리스트를 전달하고 map 함수로 변환하는 방법입니다.
    • map()의 결과는 map 객체 이므로 list()로 형변환해줍니다.
def plus_ten(x):
     return x + 10

list(map(plus_ten, [1, 2, 3]))
#출력된 값 [11, 12, 13]
  • 람다 표현식으로 함수를 만들어서 map에 넣어보겠습니다.
list(map(lambda x: x + 10, [1, 2, 3]))
#출력된 값 [11, 12, 13]


추가 참고 자료

파이썬 공식 문서, 4.7.8. 람다 표현식 을 참조했습니다.

파이썬 도장, 람다 표현식으로 함수 만들기 를 참조했습니다.




댓글 쓰기

0 댓글