Language/Python

map object

개발사전 2021. 9. 2. 21:29

map

이터러블한 객체의 모든 요소에 함수를 반영하는 파이썬 내장 함수입니다. 아래의 예시처럼 'str' 함수를 이터러블한 객체인 리스트의 모든 요소에 반영하여 int형이었던 요소들을 str형으로 일괄 변경되었습니다.

num_list = list(map(str, [1,2,3,4,5,6]))
print(num_list)          # ['1', '2', '3', '4', '5', '6']

 

map object

map 함수를 리스트로 묶지않으면 이터레이터인 map object를 반환합니다. 이터레이터의 특징인 한번 사용한 뒤 재사용하려면 다시 정의를 해주어야 합니다. 아래의 예시를 보면, num_list의 최댓값을 구한 뒤, 최솟값을 구하려고 하면 시퀸스가 비어있다고 합니다. 

num_list = map(int, ['1','2','3','4','5','6'])
print(num_list)                     # <map object at 0x7f439f3ec9a0>
print(max(num_list))                # 6
print(min(num_list))                # ValueError: min() arg is an empty sequence

 

리스트 컴프리핸션

하나의 map object 여러 번 사용하려면 리스트로 변환하여 사용하여야 합니다. map object를 리스트로 한번 묶는 것보단 리스트 컴프리핸션을 이용하는 것이 훨씬 직관적이고 효율적입니다.

num_list = [str(i) for i in [1,2,3,4,5,6])]
print(num_list)          # ['1', '2', '3', '4', '5', '6']