코딩테스트/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) 함수를 사용하는 것이 메모리 측면에서도 효율적이다.