본문 바로가기

Studying/Python

2. Lambda, Map, Reduce, Filter

python에는 lambda라는 익명 함수 개념이 존재한다.

 

일반함수는 재사용을 하기 때문에 메모리에 누적, 저장이 되는 반면, lambda는 이름이 없는 익명함수라서 저장이 되지 않는다. 

 

이런 점 때문에 주로 시퀀스형 전처리 과정에 lambda와 map, reduce, filter 함수를 같이 사용하는 경우가 많다.

 

이 글에서는 lambda와 map, reduce, filter 함수를 살펴보자.

 


1. Lambda

pyhton에서는 def를 사용하여 함수를 생성, 호출하는 과정을 지나야 함수를 사용할 수 있다.

 

이런 과정을 건너뛰어 메모리의 절약과 간편함이라는 장점을 가지고 있는 함수가 lambda 함수이다.

 

일반적으로

 

일반적인 함수 선언 방법

위의 과정을 거쳐 함수가 생성된다.

 

이에 반해 lambda 함수를 사용할 경우, 

 

lambda 함수 선언 방법

한 문장으로 대체할 수 있게 해준다.

 

return으로 할당할 필요없이 자동으로 결과를 반환하며, 익명함수이기에 함수의 이름을 지정하지 않는다.

 

물론 객체이기 때문에 정의와 동시에 변수를 담을 수 있으며, 이름이 없는 일회성 함수이기 때문에 재사용이 불가하다.


2. Map

map 함수는 list 혹은 tuple에 있는 모든 원소들이 함수에 의해 수행된 결과를 literable한 객체로 넘겨주는 기능을 한다.

 

map 함수 사용 방법

map 함수는 첫 인자로 함수를, 두 번째 인자로 list나 tuple을 받는데, 함수를 받을 때 lambda를 사용하는 경우가 많다.

 

map 함수 사용 예시

위에서는 결과값을 list로 형변환하기 위해서 maplist로 감쌌다.


3. Reduce

reduce 함수는 두 개의 필수인자와 하나의 옵션인자를 가지는데, 함수를 사용하여 iterable한 하나의 값으로 줄인다.

 

이 때, reduce 함수는 python 내장함수가 아니기에 functools 모듈에서 reduceimport를 해야한다.

 

reduce 함수 사용 예시

이렇게 되면 reduce_list에서 

(1, 2), 3, 4, 5  >> (3, 3), 4, 5 >> (6, 4), 5 >> (10, 5)

 

이 과정이 순차적으로 실행되어 최종적으로 15가 출력된다. 


4. Filter

filter 함수는 원하는 값만을 list 혹은 tuple 형태로 추출하는 함수이다.

 

filter 함수 사용 방법

첫 번째 인자로 사용되는 함수는 각 처리의 요소에 대해 boolean값을 반환하게 된다.

 

boolean값이 true이면 결과로 반환할 값에 남기고, false이면 제거한다.

 

filter 함수 사용 예시

filter 내부 lambda를 통해 list에서 2로 나누었을 때 나머지가 0, 즉 짝수인 것들만 추출이 된다.