lambda(), map(), filter(), reduce() 함수는 함수를 간단하게 만들어주는 함수들로 파이썬에서 프로그래밍할 때 if elif else문을 이용하여 복잡하게 하드코딩할 필요없이 한줄로 함수를 구현하게 해주는 함수들입니다.
그래서 람다표현식은 개발자의 생산성을 높여주는 문법이다.
장점 요약)
코드의 간결성
필요한 정보만을 사용해 퍼포먼스 향상- 이 경우 메모리상의 효율성 및 불필요한 연산의 배제가 가능
익명함수라고 불리는 람다함수는 람다표현식으로 함수를 더욱 간단하게 할 수 있다.
매개변수를 받아 다른 함수의 인수로 넣을 때 주로 사용한다.
def add(n,m):
return n+m //기존 함수
print(add(2,3))
->5
이 것을 람다식으로 표현하면,
print((lambda n,m: n+m)(2,3))
->5
map은 함수와 리스트를 인자로 받고, 리스트의 요소를 각각 꺼내서 함수를 적용시킨 다음 그 결과를 새로운 리스트에 담아준다.
3의 배수를 문자열로 변환하는 예시
a=[1,2,3,4,5,6,7,8,9,10]
list(map(lambda x: str(x) if x % 3 == 0 else x, a))
[1,2,'3',4,5,'6',7,8,'9',10]
람다 표현식에서 if를 사용했으면 else를 반드시 사용해야한다. 그리고 elif는 사용 불가함.
filter는 반복 가능한 객체에서 특정 조건에 맞는 요소만 가져오는데, filter 조건에 맞는 값일때만 해당 요소를 가져온다.
def f(x):
return x>5 and x<10
a = [8, 3,2,10,15,7,1,9,0,11]
list(filter(f, a))
=> [8, 7, 9]
reduce는 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환하는 함수이다.
def f(x, y):
return x+y
a= [1,2,3,4,5]
from functools import reduce
reduce(f,a)
=> 15