Python 의 map 함수에 대해서 살펴보겠습니다.
map 함수는 아래와 같이 사용합니다.
map(function, iterable) - function : 함수, iterable : 순회가능한 Object
두번째 매개변수로 넘어온 iterable 객체를 돌면서 첫번째 매개변수인 function을 실행하는 것입니다.
# int값으로 이루어진 List의 요소들을 str로 바꿔서 새로운 List를 만드는 작업
>>> intList = [1, 2, 3, 4, 5]
>>> strList = []
>>> for intVal in intList:
strList.append(str(intVal) + '입니다.')
>>> strList
['1입니다.', '2입니다.', '3입니다.', '4입니다.', '5입니다.']
# map함수를 이용하면?
>>> def intToStr(intVal):
return str(intVal) + '입니다.'
>>> mapStrList = list(map(intToStr, intList))
>>> mapStrList
['1입니다.', '2입니다.', '3입니다.', '4입니다.', '5입니다.']
위처럼 int 자료형으로 이루어진 List의 값들을 문자로 변경하기 위해 for문을 통해서 돌리지않고
map 함수를 통해 좀더 간단하게 만들 수 있습니다.
함수의 내용이 긴 경우라면 함수를 선언하는 것이 좋겠지만 위 예제처럼 짧은 경우
lambda를 사용하면 좀 더 간결한 코드를 만들 수 있습니다.
>>> intList = [1, 2, 3, 4, 5]
>>> mapStrList = list(map(lambda intVal: str(intVal) + '입니다', intList))
>>> mapStrList
['1입니다', '2입니다', '3입니다', '4입니다', '5입니다']
lambda에 관해 살펴보시려면 아래 링크를 참조해주세요
위 예제들을 보시면 항상 map을 사용할때 list 함수로 변환시켜 주었는데요
그 이유는 map함수는 map 으로 결과를 리턴하기 때문입니다.
>>> intList = [1, 2, 3, 4, 5]
>>> map(lambda intVal: str(intVal), intList)
<map object at 0x00DF62C8>
그래서 상황에따라 List나 tuple로 변환시켜 사용합니다.