본문 바로가기
* Language/Python

[Python] 파이썬 : map()함수 왜 쓰는지와 사용법 단계별로 이해하기

by codinguser 2020. 11. 30.

[Python]파이썬: map()함수
파이썬 : map()함수 단계별로 이해하기

 

 

 

 

파이썬 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())

 

[Python] 파이썬 : 문자열 (공백)나누기(split())와 결합(join())

* split()와 join()을 이용하여 쉽게 풀 수 있는 경우. 1. 알고리즘 문제를 풀다 보면 문자열 (공백)나누기와 결합을 요구하는 문제 2. 문자열을 리스트로 나누거나, 리스트를 문자열로 결합할 때 split(

codinglevelup.tistory.com

 

 

 

(2)

1을 바탕으로 문자로 처리되어있는 것을 int형으로 모두 바꾸고자 할 때

 

ㄴ1)

1
map(int, ['1''2''3''4''5'])
cs

 

ㄴ2)

1
map([12345])
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
= 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개씩 받는 방법을 의미하는 것입니다.

 

 

댓글