lambda 함수
lambda 함수
lambda 인자 : 표현식
다음은 두 수를 더하는 함수입니다.
>>> def hap(x, y):
... return x + y
...
>>> hap(10, 20)
30
이것을 람다 형식으로는 어떻게 표현할까요?
>>> (lambda x,y: x + y)(10, 20)
30
몇 가지 함수를 더 배워보면서 람다가 어떻게 이용되는지 알아보도록 하죠.
map()
map(함수, 리스트)
이 함수는 함수와 리스트를 인자로 받습니다. 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아줍니다.
>>> list(map(lambda x: x ** 2, range(5)))
[0, 1, 4, 9, 16]
map 함수는 리스트에서 원소를 하나씩 꺼내서 함수를 적용시킨 결과를 새로운 리스트에 담아주니까, 위의 예제는 0을 제곱하고, 1을 제곱하고, 2, 3, 4를 제곱한 것을 새로운 리스트에 넣어주는 것입니다.
reduce()
reduce(함수, 시퀀스)
시퀀스(문자열, 리스트, 튜플)의 원소들을 누적적으로 함수에 적용시킵니다.
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
10
위의 예제는 먼저 0과 1을 더하고, 그 결과에 2를 더하고, 거기다가 3을 더하고, 또 4를 더한 값을 돌려줍니다.
>>> reduce(lambda x, y: y + x, 'abcde')
'edcba'
filter()
filter(함수, 리스트)
리스트에 들어있는 원소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 만들어줍니다.
0부터 9까지의 리스트 중에서 5보다 작은 것만 돌려주는 예제
>>> list(filter(lambda x: x < 5, range(10))) # 파이썬 2 및 파이썬 3
[0, 1, 2, 3, 4]
홀수를 돌려주는 필터
>>> list(filter(lambda x: x % 2, range(10))) # 파이썬 2 및 파이썬 3
[1, 3, 5, 7, 9]
댓글남기기