map 함수는 다음과 같은 형태를 가진다.
map(funtion, iterable)
첫 번째 매개변수로는 함수가 오고 두 번째 매개변수로는 iterable한 즉 반복 가능한 객체가 위치한다.
map 함수가 실행되면 반복가능한 객체가 첫 번째 인자인 함수에 하나씩 요소를 넣어 함수를 수행한다.
이후 해당 함수가 반환된 값을 map 객체의 형태로 반환한다.
자료형태가 map함수이기 때문에 실제 값을 확인하기 위해서 list, tuple과 같은 형태로 변환 시켜주어야한다.
예를 들면test = [2, 3, 4, 5] test_list = map(float, test) print(test_list)
해당 출력 값은
<map object at 0x104fecdf0>가 된다.
list의 형태로 변환 시켜주면 아래와 같은 결과 값을 반환한다.[2.0, 3.0, 4.0, 5.0]
map 함수를 왜 사용할까?
위 기본 예제를 map함수를 사용하지 않은 예제로 비교하여 보자.
test = [2, 3, 4, 5] test_list = [] for i in test: i = float(i) test_list.append(i) print(test_list)
test = [2, 3, 4, 5] test_list = list(map(float, test) print(test_list)
map함수를 사용함으로써 4줄 가량의 코드를 한 줄로 줄일 수 있다.
또한 방대한 양의 데이터를 처리해야 할 경우 단순한 반복문은 연산과정에서 낭비가 발생되는 원인이기 때문에 반복문을 무작정 사용하기 보다. 해당 함수를 활용하는 방법이 보다 적절한 방법이 될 수 있다.
일회성 연산을 빠르게 수행할 경우에도 람다함수와 map함수를 활용할 수 있다.
test = [2, 3, 4, 5]
test_list = list(map(lambda x: x + 567, test))
print(test_list)
# [569, 570, 571, 572]
위와 같이 별도의 함수를 만들지 않고 람다함수와 map함수를 활용해서 메모리 유발을 방지할 수 있다.
참고 링크
https://heytech.tistory.com/17
https://blockdmask.tistory.com/531