Programming/Python

map() - 리스트, 튜플 등에서의 각 요소를 지정된 함수로 처리해주는 내장함수

makeitworth 2021. 4. 26. 23:37

map(조건함수, 순회 가능한 데이터)

입력: 순회가능한 데이터 (리스트, 튜플), 조건함수 (파이썬 내장함수, 사용자 정의함수)

출력: map객체

 

리스트의 요소들인 숫자들을 문자열로 바꾼 새로운 리스트를 만들고 싶으면 어떻게 해야할까?

for 문을 이용해 아이템 하나씩 바꿀 수도 있지만 너무 번거롭다.

 

lst = [3, 6, 8, 2, 3]

str_lst = []
for i in range(len(lst)):
    str_lst.append(str(lst[i]))
str_lst

>> ['3', '6', '8', '2', '3']

 

map() 을 쓰면 지정된 함수를 리스트 각 요소에 한꺼번에 적용해준다.

lst = [3, 6, 8, 2, 3]
str_lst = list(map(str, lst))
str_lst

>> ['3', '6', '8', '2', '3']

 

map()함수를 list()로 감싸주는 이유는 원래 map()의 출력값은 map 객체이기 때문이다.

lst = [3, 6, 8, 2, 3]
lst = map(str, lst)
lst

>> <map at 0x104317700>

 

map()함수로 바꿔줄 수 있는 것은 list만 있는 것은 아니고 iterable한 자료 타입이면 가능하다(ex> tuple, set...)

int_set = {1,2,3,4,5}
str_set = set(map(str, int_set))
str_set

>> {'1', '2', '3', '4', '5'}

 

파이썬 내장함수 말고, 사용자 정의 함수도 map()으로 한번에 적용 가능하다

lst = [3, 6, 8, 2, 3]
def minus(n):
    return -n
    
min_lst = list(map(minus, lst))
min_lst

>> [-3, -6, -8, -2, -3]