말랑말랑제리스타일

파이썬 lambda 함수의 뜻과 사용방법 본문

프로그래밍/파이썬

파이썬 lambda 함수의 뜻과 사용방법

제리제리 2022. 2. 16. 13:15

파이썬에서 주로 볼 수 있는 lambda라는 용어는 뭐고 어떻게 사용하는건지 알아봅시다.

그리고 나서 판다스 map 메서드에서 lambda를 사용하는 예시도 한번 알아보겠습니다.

Lambda 함수란?

반응형

lambda 함수는 비단 파이썬에서 뿐만 아니라 많은 프로그래밍 언어에서 사용되는 단어로 익명 함수를 선언할 때 사용하게 됩니다.

이 lambda 함수란 익명 함수라는 말로 말 그대로 이름이 없는 함수입니다.

def get_p_add10(p):
    return p + 10
print(get_p_add10(1))
print((lambda p: p + 10)(1))
반응형

파이썬에서 보통 함수를 선언할 때 def 라고 선언하고 함수명과 파라미터를 정의해준 뒤 함수 내용을 써내려가죠.

lambda 함수는 약간 다릅니다. lambda 라고 선언해준 뒤 바로 이어서 함수 내용을 써주게 됩니다.

위 소스코드를 보면 아시겠지만 get_p_add10과 (lambda p:p+10)은 동일합니다.

lambda 함수를 사용하는 이유

lambda 함수를 사용하는 이유를 가장 간단히 설명하면 다시 쓸 일이 없는 간단한 함수를 만들어주기 위해서입니다.

물론 위에 작성한 파이썬 소스 코드에서는 함수 없이 연산자로 계산해주면 간단하게 되지만 몇몇 특수한 경우가 있습니다.

예를 들면 파이썬에서 판다스를 사용하는 경우 map을 사용한다던지 콜백으로 함수 자체가 파라미터가 된다거나 하는 경우 꼭 함수를 사용해줘야하고 그 함수를 따로 정의해줄 필요까지는 없을 때나 그 외 다양한 경우에서 lambda 함수를 사용하는게 필요하기도 합니다.

판다스에서 lambda 함수의 사용

반응형

파이썬에서 가장 많이 사용하는 모듈 중 하나인 판다스에서는 map이라는 메서드가 은근히 자주 등장합니다.

시리즈나 데이터프레임의 데이터를 매핑하기 위한 메서드인데요.

review_points_mean = reviews.points.mean()
reviews.points.map(lambda p: p - review_points_mean)

간단히 소스를 설명하면 reviews라는 판다스 데이터프레임의 평균값을 계산해준 뒤 point 컬럼의 모든 값에서 평균값을 뺀 수치를 시리즈로 만들어주는 소스입니다.

이런식으로 데이터프레임.컬럼명.map(함수) 형태로 사용하게 되는 경우가 많은데 매핑될 값을 계산해주는 메서드로 lambda 함수를 사용할 수 있습니다.

특히 lambda 함수같은 당장 사용하지 않아도 될 것같은 기능들에 대해서는 지금 당장은 이런게 필요할까라는 생각이 들수도 있고 굳이 왜 이런걸 만들까라는 생각이 들 수 있습니다.

그러나 프로그래밍 언어의 절반 이상은 알면 언젠가 사용하게 되는 상황이 오게 되고 많은 기능을 알아둬야 다른 사람의 소스를 분석하는데도 상당히 유용하기 때문에 가급적이면 lambda 함수는 한번 제대로 알고 넘어가시길 추천드립니다.

참고로 저도 제가 삼항연산자를 이렇게 자주 쓰게될지 상상도 못했습니다.

Comments