오늘 정리해 볼 주제는 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 를 참조하였음을 알린다.
'CS > Python' 카테고리의 다른 글
[python] positional argument 의 개념, 의미 (0) | 2021.11.17 |
---|---|
[python] string object의 count 함수 사용 시 주의사항 (0) | 2021.11.14 |
[python] 오류출력은 에러로 보내주세요 ! - print 함수의 출력을 stderr 로 보내기 (2) | 2021.10.06 |
[python] python에서 객체를 string으로 출력하는 방법 (0) | 2021.10.04 |
[Python] String List 내용 문자열(string) 만드는 방법 - join 함수 (0) | 2021.10.01 |