Python
[Python] 람다(Lambda) 표현식
TikTaek
2021. 1. 5. 19:09
Python에서 람다 표현식은 이름이 없는 함수(anonymous)로 식의 형태로 되어 있다.
일반적으로 Python에서는 아래와 같이 함수를 정의 한다.
def Plus(num):
return num + 1
def Plus2(num1, num2):
return num1, num2
위의 함수들을 람다 표현식으로 정의 한다면 다음과 같아진다.
# def Plus
lam1 = lambda num : num + 1
# def Plus2
lam2 = lambda num1, num2 : num1 + num2
즉 기존 함수의 매개변수가 lambda뒤에 따라오는 변수가 되고 : 부터 함수의 body가 되는 것이다.
람다 표현식의 호출방식은 아래와 같이 람다식이 할당된 변수를 호출하는 경우와 람다식 자체를 호출하는 경우가 있다.
# def Plus의 경우
>>> lam1(5)
6
# 람다 표현식 자체로 호출
>>> (lambda num: num + 5)(5)
10
람다표현식은 인수로 사용가능 하기도 하다.
많이 보여지는 예시가 map에 사용되는 경우이다.
>>> list(map(lambda num: num + 10, [10, 20, 30]))
[20, 30, 40]
또한 sort에서도 중요한 개념으로 사용되고는 한다.
# list
>>> exam = [["A","C"], ["B","D"], ["A","B"], ["B","C"]]
>>> print(exam)
[["A","C"], ["B","D"], ["A","B"], ["B","C"]]
>>> result = sorted(exam, key=lambda k: (k[0], k[1]))
>>> print(result)
[['A','B'], ['A','C'], ['B','C'], ['B','D']]
위와 같이 람다식에 두개의 인자를 사용하여 sort하면 2차원배열도 더욱 쉽게 정렬이 가능해진다.