코딩테스트/Python

[Python] 람다(lambda) 함수

곰코 2022. 4. 27. 10:47

코딩 테스트를 풀다보면 이중 리스트에서 특정 값을 기준으로 sorting 을 진행하는 경우들이 있는데 아래와 같이 lambda를 쓰는 경우를 많이 봐왔고 의문이 생겼다. 왜 사용하는 걸까?

_list = [[1,70],[15,23],[7,164],[34,6],[2,10]]
_list.sort(key= lambda x:x[1])
print(_list)

Result

 


파이썬에서는 lambda 함수를 이용하여 이름없는 함수인 익명 함수를 만들 수 있다.

 

아래는 매개변수에 increment하는 익명함수이다.

 

 lambda 정의방법 = lambda x: x+1 

 

뒤에 x+1 자리에 원하는 기능들을 작성하면 된다.

 


일반적인 함수 작성법을 사용하면 되는데 왜 lambda 함수를 사용하는 걸까?

 

가장 큰 이유는 코드의 간결함메모리의 최적화 때문이다.

 

일반적인 함수 작성법

def add(num1, num2):
    return num1 + num2
    
result = add(1,2)

위의 코드에서 일반적인 함수 작성법을 이용하면 add()를 작성하고 호출하는데에 3줄이 필요함을 알 수 있다.

 

lambda 함수

lam = lambda num1,num2 : num1 + num2
result = lam(1,2)

람다(lambda)함수를 사용할 경우에 한 줄이 줄어들게 된다.

 

위처럼 단순하게 작성할 때는 그 효용을 모르지만 코드가 복잡해지고 간단한 함수들까지도 모두 작성하기 힘들 때는 람다(lambda)함수는 빛을 바랄 것이다.

 

메모리의 최적화

 

파이썬의 경우 함수를 호출하는 순간부터 메모리에 위치하게 되는데 만약 한 번만 사용하게 된다면 이는 메모리를 낭비하는 행위이다.

 

따라서 이런 경우에 한 번 사용하고 메모리에서 지우는 람다(lambda) 함수를 사용하는 것이 메모리 측면에서도 효율적이다.

 

 

 

한 번만 사용하고 버릴 함수들은 lambda를 이용하자