람다(lambda)함수 정의
- 일반적인 함수를 한 줄의 문으로 정의할 수 있는 새로운 함수 정의 리터럴
- 일회성으로 활용할 함수 정의할 때 주로 사용
:
뒤에는 식만 올 수 있음- 람다 함수도 하나의 객체임
1 | f = lambda x: x + 1 |
인수가 두 개 있는 람다 함수를 지니는 변수 지정 및 함수 호출
1
2g = lambda x,y: x + y
print g(1,2)기본 인수를 지니는 람다 함수 정의
1
2
3g = lambda x, inc=1: x+inc
print g(10) # inc기본 인수 값으로 1사용
print g(10, 5)가변 인수를 지니는 람다 함수 정의
1
2vargs = lambda x, *args: args #args가 리턴됨
print vars(1,2,3,4,5)
람다 함수 사용하기
일반 함수 사용
1
2
3
4
5
6
7
8
9
10
11def f1(x):
return x*x + 3*x - 10
def f2(x):
return x*x*x
def g(func):
return [func(x) for x in range(-10, 10)]
print g(f1)
print g(f2)람다 함수 사용
1
2
3
4
5def g(func):
return [func(x) for x in range(-10, 10)]
print g(lambda x: x*x + 3*x - 10)
print g(lambda x: x*x*x)
람다 함수 활용
map
,filter
,reduce
내장 함수
map
내장 함수map(function, seq)
:seq
의 원소를 차례로 돌면서function
에 적용한 결과를seq
의 자료형으로 반환1
2
3
4
5def f(x):
return x * x
X - [1,2,3,4,5]
Y = map(f, X)
print Ymap
과 람다 함수를 동시에 사용 - 가장 추천1
2X = [1,2,3,4,5]
print map(lambda x: x * x, X)
filter
내장 함수seq
자료형이 지닌 각 원소값에 대해function
에 적용한 결과가 참인 원소값들만을 동일 시퀀스 자료형으로 반환1
print filter(lambda x: x>2, [1,2,3,45])
reduce
내장 함수reduce(function, seq[,initial])
seq
자료형이 지닌 각 원소값에 대해function
함수를 적용하면서 하나의 값으로 매핑- 첫번째 인자(
function
)는 반드시 두 개의 인자(ex. x,y)를 받아야한다.seq
의 각 원소값들이 차례로y
에 들어간다- 함수가 수행된 값은 차례대로
x
에 들어간다
- 추가적으로 제공가능한 세번재 인자인
initial
은 첫번째 단계에서x
에 할당할 초기값으로 사용된다1
2print reduce(lambda x, y: x + y, [1,2,3,4,5])
print reduce(lambda x, y: x + y, [1,2,3,4,5], 1000)