Python의 map() function에 대해 알아보자.
map()function은 파이썬의 내장 함수 중 하나로 설명은 아래와 같다.
Return an iterator that applies function to every item of iterable, yeilding the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. ...
즉, map()함수(function)는 파라미터로 주어진 각 아이템들에 대해 파라미터로 주어진 함수를 진행한 이후 map 객체를 반환하는 함수다.
map(fun, iter)
# fun : function to which map passes each element of given iterable.
# iter : iterable which is to be mapped.
# Return : a list of the results after applying the given function to each item of a given iterable(list, tuple etc.)
def addition(n):
return n + n
numbers = (1, 2, 3, 4)
result = map(addition, numbers)
print(list(result)
>[2, 4, 6, 8]
문제
아래 문제는 BAEKJOON의 파이썬 문제 1000번 'A+B' 문제다.
두 개의 정수 A, B를 input()으로 입력받은 다음 A, B를 출력하는 프로그램을 작성하는 것이 문제다.
# input
1 2
# 프로그램 실행
# output
3
예제 입력은 1 2이며 출력은 3이 반환되어야 한다. input 값이 2개인데 두 값 사이에 space 한칸이 포함되어있다. 문제에서 A, B 합하기 위해 두 값을 따로 구분할 필요가 있다. 이를 위해 split()함수를 사용해 해당 스페이스를 기준으로 두 값을 구분하면 되겠다.
해결
입력을 위해 input() 함수를 사용한다. 해당 함수로 값을 입력받을 경우 리턴 값은 str의 형태다. 우리는 A와 B 두 정수를 덧샘을 해야하는데 str끼리는 덧샘을 할 수가 없다. 따라서 input()으로 입력받은 값들을 int 함수를 활용해 정수로 바꿀 필요가 있다.
따라서 아래와 같이 map()함수를 활용해 주어진 리스트들의 요소들을 각각 정수를 만든 뒤, 해당 정수값들을 덧샘한 결과를 print하면 문제를 해결할 수 있다.
a, b = map(int, input().split())
print(a+b)
인사이트
map() 함수에 대해 인지를 하고 있었으나, 해당 백준 문제를 본 뒤 map()함수로 풀이해야겠다는 생각은 하지 못했다. 물론 문제를 푸는 방법은 다양하지만 map()함수가 아직 익숙하지 않다는 점은 인정할 수 밖에 없다. 해당 함수는 자주 쓰이는 유용한 함수이기 때문에 친숙해질 필요가 있다고 생각한다.
'Research > Python' 카테고리의 다른 글
Jupyter notebook 셀의 결과물만 출력하는 방법 (0) | 2021.10.18 |
---|---|
F-string에 대해 (0) | 2021.10.18 |
2차원 리스트에 대해 (0) | 2021.10.18 |
Pandas 데이터에 일괄 함수 적용하기 (0) | 2021.10.18 |
Python_문자열을 날짜 형식으로 바꾸기 (0) | 2021.10.09 |
댓글