상황파악

파이썬 - 람다 (lambda) 본문

파이썬

파이썬 - 람다 (lambda)

otch80 2021. 1. 7. 01:04

저번시간에 제너레이터를 배웠다.

그렇다면 람다는 또 무엇인가?

 

=> 함수를 한줄로 표현할 수 있지만 변수 선언은 못하는 함수표현식

 

 

 

직접보는게 이해가 빠를것이다

 

 

 

def sum(a,b):
	retrun a+b
    
sum(1,2)
# 3

 

일반적인 덧셈 함수이다

사실 별 기능을 하지 않는 함수는 오히려 실행속도에 방해를 하기때문에 다음과 같은 방식은 권장하지 않는다

 

 

그렇다면 위 함수를 람다로 표현하면 어떻게 나타낼수 있는가?

 

 

 

# 자체 호출
(lambda a,b: a+b)(1,2)
# 3

sum = lambda a,b: a+b
sum(1,2)
# 3

 

즉, def 함수명: 해당 부분이 사라지는 것이고 매개변수를 앞에, 리턴값을 뒤에 쓰는 표현식이다

 

하지만 간단한 만큼 제약이 많을 수 밖에 없다

람다 표현식은 변수를 만들 수 없다

 

 

상수를 참조하는 함수를 람다로 표현하려면 어떻게 해야 할까?

 

 

 

a = 1
(lambda b: a+b)(2)
# 3

 

람다를 쓰기 전에 선언하면 된다

 

 

사실 아직까지 너무 당연한 말을 해서 이게 얼마나 효과적인지 알 수 없다

파이썬에서 상당히 많이 사용하는 map 함수를 통해 lambda의 사용법을 익혀가자

 

 

우선 map함수는 기본적으로 다음과 같은 형태를 가지고 있다

 

 

 

map(함수, 리스트)

 

우측에 있는 리스트 요소들을 순차적으로 함수에 넣겠다는 뜻이다

아마 파이썬을 많이 사용해본 사람이라면 반복문에서의 파이썬의 효율이 얼마나 뛰어난지 알 것이다

 

 

예시를 보자

 

 

 

map(lambda a: a * 2, range(9))
# 2, 4, 6, 8, 10, 12, 14, 16, 18

 

구구단 2단을 출력할 수 있다

 

 

이외에도 reduce(), filter() 등등 다양한 방법으로 응용할 수 있다

'파이썬' 카테고리의 다른 글

파이썬 - 제너레이터 (Generator)  (0) 2021.01.04
Python pandas 간단 설명  (0) 2019.11.30