본문 바로가기
개발 Tools/파이썬_개념

python lambda 함수 사용법 ( map(), if else )

by 전컴반 2021. 7. 7.
반응형

안녕하세요!
이번에는 '익명 함수'라고 불리는 lambda 함수에 대해 알아볼까 합니다

lambda 함수 기본 예제


함수를 선언하고 생성하지 않아도 간단히 쓸 수 있습니다

lambda_x = lambda x: x ** 3
print(lambda_x(2))

출력
8


lambda_x라는 변수를 만들어서 값을 집어넣습니다. 함수의 인자에 '2'를 집어넣으면 x ** 3의 x에 2가 들어갑니다. 그리곤 값을 반환해줍니다.
원래 함수형을 생각해보자면

def lambda(x):
	return x ** 3


이런 식의 형태로 짤 수 있습니다
x라는 인자를 입력받아서 y라는 출력을 반환합니다. 하지만 lambda 함수는 간결화시켰다고 생각하시면 될 거 같습니다


인자를 여러 개 받을 수도 있습니다

lambda_xy = lambda x, y: x + y
print(lambda_xy(4, 4))

출력
8


x, y를 입력받아서 각각의 변수에 대입하여 반환합니다

lambda 함수의 map() 함수


lambda 함수는 map 함수와 쓸 때 효과적입니다

인자가 여러 개라면 보통 list를 만들어서 넣습니다. lambda 함수는 이럴 때 map 함수를 사용합니다
예제를 보겠습니다

a = [1, 2, 3]
lambda_map = map(lambda y: y ** 2, a)
print(lambda_map)

출력
<map object at 0x00000241180052B0>


출력이 map 객체로 나옵니다. 저희가 예상한 값은 [1, 4, 9]입니다. 왜냐면 리스트 a 각각의 값들이 y에 들어가서 반환되기 때문입니다.
그렇다면 리스트에 3개의 항목이 있으니 출력 또한 3개로 나와야 합니다. 이렇게 출력이 여러 개일 때는 역시 list에 담아서 출력합니다

print(list(lambda_map))

출력
[1, 4, 9]


map() 함수를 쓴다면 항상 list로 받아줘야 함을 유의합니다.

lambda 함수 안에 if 문


lambda 함수 안에 여러 조건들을 설정할 수 있습니다. 주의할 점은 출력 값이 먼저 나온다는 점입니다.

보통은
if ~~~:
print("~~~")
이지만
lambda 함수는 반대입니다

score = lambda x: "A등급" if x >= 80 else "B등급"
print(score(50))

출력
B등급


이처럼 점수가 50점인데 80점보다 높으면 'A등급'이고 그렇지 않으면 'B등급'입니다
"만약에~면 ~이다"가 일반적인 if 문이라면. lambda 함수에서의 if 문은 "~이다 ~라면"으로 해석하시면 됩니다

그렇다면 다중 조건은 어떻게 할까요? ()로 구분하여 가독성을 높입니다.

score = lambda x: "A등급" if x >= 80 else ("B등급" if x >= 70 else "C등급")
print(score(50))

출력
C등급


위와 순서는 똑같습니다. 'A등급' 이 아니라면 () 안에 있는 조건으로 들어가서 다시 시작합니다. 여기서 else if 나 elif 같은 건 없음의 유의합니다

감사합니다

반응형

댓글