함수적 프로그래밍 - map 내장 함수
map 내장 함수
사상 함수 map은 입력 집합(X)과 사상 함수(f)가 주어져 있을 때, Y = f(X) 를 구한다.
map은 두 개 이상의 인수를 받는다 첫 인수는 함수(f)이며 두 번째부터는 입력 집합(X)인 시퀀스 자료형(문자열, 리스트, 튜플 등) 이어야 한다.를
첫 인수인 함수는 입력 집합 수만큼의 인수를 받는다.
ex)
map 함수의 첫 번째 인수는 함수(f)이고, 두 번째 인수는 리스트이다.
두 번째 인수의 모든 아이템들은 첫 인수의 함수 f에 적용되고 결과로 리스트를 리턴한다.
map 함수는 간결하면서도 이해하기 쉬운 코드를 생성하게 한다. 개개의 요소를 다루지 않지만...
Y = map(f, X) 는 집합 X에 함수 f를 적용한 결과 Y를 구한다는 의미가 명확하다.
실행 효율면에서도 일반 for를 쓰는 것보다 앞선다. 따라서 가능하면 이러한 방식의 코딩을 많이 하는 것이 좋은 방법이다.
람다 함수를 이용한 map 함수:
X = [1,2,3,4,5]
Y = map(lambda a: a*a, X)
함수를 재사용하지 않을 경우에는 이렇게 간단하게 람다 함수를 이용하는 것이 간편하다.
map 함수는 입력을 두 개 이상도 받는다.
이 때는 함수도 입력 집합 수에 맞추어서 인수를 받아야 한다.
만일, map에 넘겨주는 함수가 이미 파이썬에서 정의한 연산일 경우에는 operator 모듈을 이용할 수 있다.
순서 쌍 만들기
map 함수는 순서쌍을 만드는 데도 사용딘다. 이를 위해서는 첫 인수로 None을 넘겨주어야 한다.
여기서 함수 객체 None의 의미는 입력받는 값을 그대로 전달하는 함수로 생각할 수 있다.
※ 순서 쌍을 만들 때, map과 zip의 차이점:
map은 길이가 다를 때 None을 추가하지만, zip은 짧은 인수를 기준으로 나머지는 버린다.