본문 바로가기
Python/Basic Data Analysis

[Python] 람다 관련 (lambda, map)

by JKyun 2022. 4. 26.

안녕하세요~ 우주신 입니다.

 

오늘은 파이썬에 익숙치 않은 분들에게는 생소할 수도 있지만 

한번 익히고 나면 자주 등장하는 lambda와 map 그리고 apply에 대해서 배워보겠습니다.

 

먼저 순차적으로 lambda부터 짚고 가보죠.


1. lambda 인자: 표현식
lambda x: f(x)

쉽게 생각하면 lambda는 function을 정의하는 방법 중 하나인데,
차이점은 한 줄로 표현하고 함수의 이름이 없다는 것 입니다.

 

예를 들어, 아래는 lambda를 통해 함수를 정의하고 인자로 2라는 값을 넣은 결과 입니다.

f = (lambda x: x*2)
f(2)

4

 

이를 다시 우리가 흔히 쓰는 function으로 바꿔서 표현하자면 아래와 같습니다.

def f(x): 
    return x*2
f(2)

4

 

그럼, 굳이 왜 lambda라는 것을 배워서 써야하는가?라고 묻는다면
함수 자체를 정의하지 않고 간결하게 한번 쓰고 버리기에 딱 알맞은 놈이라는 겁니다.

(lambda x: x*2)(2)

4


위와 같이 익명 함수에 parameter인 2를 바로 넣으니 같은 결과가 나오는 것을 알 수 있습니다.

조금 더 응용해서 IF-ELSE 구문을 적용해보죠.

(lambda x: True if (x > 0) else False)(-1)

False

이를 다르게 표현하면 아래와 같죠.

def f(x):
    if (x > 0):
        return True
    else:
        return False

f(-1)

False

 

위를 이해 했으면 lambda 얼추 정복 했다고 보시면 됩니다.

자, 이제 lambda와 함께 가장 잘 쓰이는 map을 알아보죠.

 

 

2. map (함수: 리스트)

mapfor문과 비교하며 이해하면 쉬워요.
아래 예시를 보죠.

def f(x): 
    return x*2

l = [1,2,3,4,5]
for x in l:
    print (f(x))

2,4,6,8,10 이 순차적으로 프린트 될 것 입니다.

제일 익숙한 방법으로 리스트의 1,2,3,4,5에 각각 2를 곱한 결과를 구해봤습니다.

 

for문 대신 map을 활용하여 나타내면 아래와 같습니다.

def f(x): 
    return x*2

list(map(f, [1,2,3,4,5]))

[2,4,6,8,10]

 

이제 응용하여 우리가 배운 lambda를 활용해보죠.

list(map(lambda x: x*2, [1,2,3,4,5]))

[2,4,6,8,10]

 

제일 처음에 보여준 결과와 같은 결과를 도출해내지만 코드 한줄로 간결하게 해결 했습니다.

위에서 배운 IF-ELSE를 lambda와 map을 통해 표현해보죠.

list(map(lambda x: True if (x > 0) else False, [-1,0,3,10]))

[False, False, True, True]

 

위 코드를 이해 하셨다면 얼추 람다는 정복 하신 겁니다.

이번 포스트에 이어 다음 포스트에서는 apply도 살펴보죠.

 

 

끝~

 

댓글