본문 바로가기
CS/Python

[python] map 함수(map function) 의 사용방법 및 예시

by Warehaus 2021. 11. 13.

오늘 정리해 볼 주제는 map 함수이다.

 

최근 tabulate 를 사용하면서 일부 코드수정이 필요했었는데,

다시한번 정리 차원에서 포스팅을 작성한다.

 

일단  map 은 언제 사용해야 할까?

기능 자체는 iterable 자료형에 담겨있는 값을 특정 함수에 적용하는 것이다.

Return an iterator that applies function to every item of iterable, yielding the results. 

 

나는 아래와 같은 경우에, map 함수를 적극 활용했으며, 코드 예시를 보면 어떻게 사용하는지에 대한 느낌이 올 것이다.

 

1. 리스트에 있는 모든 값을 string으로 변경하고 싶을 때.

2. 리스트 안에 있는 값으로 로그 메시지를 만들어 보고 싶을 때.

 

내가 사용했던 케이스 중에서 생각나는 경우가 2가지 이지만, 실질적으로 많은 경우에 사용 가능하고 우선은 위 두가지 경우의 예시 정도를 공유하고자 한다.

 

1. 리스트 값을 모두 string으로 변경

 

def run():
    l = [ 1, 2, 3, "a", "b", "c", 3.14, 99.9 ]
    print(l)

    ml = list(map( str, l ))
    print(ml)

if __name__ == "__main__" :
    run()

 

map( str, l ) 만 실행되는 경우 map class 가 리턴되며, 리턴 된 map 을 list로 다시 만들어 str로 변환 된 값들을 ml 변수에 넣는다.

위 코드를 실행하면 아래와 같은 결과를 얻는다.

 

python3 map_01.py 
[1, 2, 3, 'a', 'b', 'c', 3.14, 99.9]
['1', '2', '3', 'a', 'b', 'c', '3.14', '99.9']

 

2. 리스트 안의 내용으로 로그 메시지를 만들어 보고 싶을 때

 

어떤 데이터가 리스트에 담겨있을 때 , 앞에 헤더를 붙인다거나,  뒤에  footer 를 붙이고 싶을 때에도 많이 사용했다.

아래는 간단한 예시이다.  errmsg 는 iterable 한 list data structure 에서 i 를 전달받고, Name header 를 붙여서 리턴한다. 

 

이 결과를 print(tuple_msg(errmsg, d))) 에서 출력해 주는 코드이다.

 

def errmsg( i ):
    return "Name: " + i

def run():
    d = [
        "tom",
        "janet",
        "adam" ,
        "trump"
    ]

    print(d)
    print(tuple(map(errmsg, d)))
    
if __name__ == "__main__" :
    run()

 

실행 결과는 아래와 같다.

 

python3 map_01.py 
['tom', 'janet', 'adam', 'trump']
('Name: tom', 'Name: janet', 'Name: adam', 'Name: trump')

 

 

 본 포스팅의 내용은 실제 업무사례와 아래 docs.python.org 를 참조하였음을 알린다.

 

내장 함수 — Python 3.10.0 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org