파이썬 map()함수란?
각 요소들에 특정한 함수를 적용시킬 때 쓰는 함수이다.
파이썬 표준에 포함 되어있는 내장 함수이다.
단계별로 이해하기 - map()을 왜 쓰지?
1개의 입력이 아니라, 여러개가 입력된 경우 각 각의 요소들에 대해 특정한 함수를 적용시키고 싶을때 사용한다
이게 무슨말이지?
바로 예제문제로 넘어가보자
요구사항 : 아래의 예시에서는 입력된 1 2 3 4 5 를 int로 적용시키고 싶은 경우의 예시이다
입력 : 1 2 3 4 5
만약 사용자의 입력을 받는데, 입력 받는 수가 많고 각 각의 타입을 변환 할 때
(input()은 기본적으로 문자열을 받기에 각 각을 int로 지정할 때 코드는 아래와 같다)
1
2
3
4
5
6
7
8
9
10
|
items = input().split()
item_a = int(items[0])
item_b = int(items[1])
item_c = int(items[2])
item_d = int(items[3])
item_e = int(items[4])
# 첫 요소 출력 결과
print(item_a)
|
cs |
이렇게, 일일이 노가다를 해줘야 하는 불편함이 생긴다
위의 중복되는 코드와 타입을 함수로 한 번에 해결하자 : Map() 함수로
(0)
사용자로 부터 입력을 받는 경우
1
2
3
|
input()
# '1 2 3 4 5'
|
cs |
(1)
사용자로부터 입력받은 수를 공백 기준으로 분리
: split()은 기본적으로 문자열을 나누는 함수이다.
1
2
|
input().split()
# ['1', '2', '3', '4', '5']
|
cs |
< < 참 고 > >
2020/11/02 - [* Language/Python] - [Python] 파이썬 : 문자열 (공백)나누기(split())와 결합(join())
(2)
1을 바탕으로 문자로 처리되어있는 것을 int형으로 모두 바꾸고자 할 때
ㄴ1)
1
|
map(int, ['1', '2', '3', '4', '5'])
|
cs |
ㄴ2)
1
|
map([1, 2, 3, 4, 5])
|
cs |
(3)
결과 확인
:문자의 형태였던 '1', '2', '3', '4', '5' 가 정수형 1 2 3 4 5로 변환
1
2
3
4
|
a, b, c, d, e = map(int, input().split())
print(a, b, c, d, e)
# 1 2 3 4 5
|
cs |
(4)
하나의 묶음으로 담기 위한 리스트로 받고 싶을 때
1
2
3
4
|
a = list(map(int, input().split()))
print(a)
# [1, 2, 3, 4, 5]
|
cs |
+)
번외
1
2
3
4
|
result = map(int, input())
print(result)
# <map object at 0x7f3e741bf640>
|
cs |
그냥 map(int ,input())을 하고 해당 값을 변수로 지정하면 메모리 주소값이 출력이 된다. 우리는 메모리 주소값 출력이 아닌 내가 지정한 변수의 값을 출력을 원하기 때문에, 다음 아래 2가지 방법을 알아 둘 필요가 있다
1 : (2)번의 과정 처럼입력 받은 개수 만큼 설정을 지정하기
2 : (4)번의 과정 처럼 아싸리 신경 쓰기 싫으니 걍 리스트화 시켜버리기
일반적으로 코딩테스트에서 많이 쓰이는 기법은
(4)번의 리스트화 이다.
위의 단계를 이해를 했고, 본인이 코딩 테스트를 준비한다면 꼭 암기를 해두자
list(map(int, input().split())
정 리
map()자체를 단독으로 볼것이 아니라, map()이 왜 쓰이는지 그 과정을 보면 이해 할 수 있다.
+ 용어에 대한 사전으로 개념 매칭시키기
매핑(mapping) 이란 개념도 여기서 나온다, 하나의 값을 다른 값으로 대응 시키는 것을 의미. 지도를 뜻하는 map에서 나온 말이다. 지도에 표시한 정보가 현실 세계와 1:1로 대응 하듯이, 매핑을 통해 하나의 값을 다른 값으로 1:1 대응 시키는것을 의미
출처 :해시넷(매핑 뜻)
F & Q
Q) split() 함수 말고 문자열 분리가 가능한게 있을까요?
그리고 무조건 문자열 분리는 split() 함수를 외워야 할까요?
A) 파이썬에서 1개씩 받는 방법은 없는걸로 알고 있습니다
그렇기에 문자열 분리를 위해서 split()함수는 필수로 알고 있어야 할 함수입니다.(c에서 scanf처럼 "%d %d")
숫자를 1개씩 받는 방법이 무슨 말이냐면
1 2를 입력을 받는다 하면
input(1, 2) 하면 그 결과는 "1 2"로 묶이게 됩니다.
이 때 1 따로 2 따로 받는 방법이 숫자를 1개씩 받는 방법을 의미하는 것입니다.
'* Language > Python' 카테고리의 다른 글
[Python] 파이썬 : 예외 처리(try-except-finally) 단계별로 이해하기 (0) | 2020.12.24 |
---|---|
[Python] 파이썬 : sort()와 sorted() 차이 (1) | 2020.12.20 |
[Python] 파이썬 : 문자열 (공백)나누기(split())와 결합(join()) (0) | 2020.11.02 |
[Python] 파이썬 : 딕셔너리(Dictionary) 관련 함수 (0) | 2020.10.27 |
[Python] 파이썬 : 리스트(list) 관련 내장 함수, 메소드(method) 정리 (0) | 2020.10.27 |
댓글