Python map - Iterable객체 요소에 함수 적용하기

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에 관해 살펴보시려면 아래 링크를 참조해주세요

Python lambda 함수를 한 줄로 만들기

 

위 예제들을 보시면 항상 map을 사용할때 list 함수로 변환시켜 주었는데요

그 이유는 map함수는 map 으로 결과를 리턴하기 때문입니다.

>>> intList = [1, 2, 3, 4, 5]
>>> map(lambda intVal: str(intVal), intList)
<map object at 0x00DF62C8>

 

그래서 상황에따라 List나 tuple로 변환시켜 사용합니다.