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차원배열도 더욱 쉽게 정렬이 가능해진다.