안녕하세요~ 우주신 입니다.
오늘은 파이썬에 익숙치 않은 분들에게는 생소할 수도 있지만
한번 익히고 나면 자주 등장하는 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 (함수: 리스트)
map은 for문과 비교하며 이해하면 쉬워요.
아래 예시를 보죠.
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도 살펴보죠.
끝~
'Python > Basic Data Analysis' 카테고리의 다른 글
[Python] 람다 관련 (apply, applymap) (0) | 2022.04.26 |
---|---|
[Python] 회귀분석(Regression Analysis) [회귀식 추정, 회귀모형 검정, 적합도 파악] (2) | 2021.08.07 |
[Python] 상관분석(Correlation Analysis), [산점도, 공분산, 상관계수, 검정] (1) | 2021.03.05 |
[Python] matplotlib 이용하여 누적영역형차트, 원형차트 그리기 (0) | 2018.01.02 |
[Python] matplotlib 이용하여 히스토그램, 산점도 그리기 (0) | 2017.12.29 |
댓글