loading
본문 바로가기
Python/함수

Map 함수

by 원쿤짱쿤 2023. 1. 6.
반응형

함수 바르게 사용하기

 

<목차>

1. 함수란?

2. 사용하지 않게되면 어떤 불편함이 있을까...?

_______________________________________________________________

<map 함수란>

-> 각 요소들을 하나의 함수에 한번에 대응 시켜주는 함수입니다.

 

<형태>

저장할 변수 =  map(함수 이름, 대응할 일련의 요소)

-> 첫번째 매개변수에는 함수 , 두번째 매개변수에는 여거래의 요소가 담긴 일련의 자료가 들어온다.
    결과 값은 map 객체로 변환 된다.

 

<예제로 배우는 함수 사용 이유>

그렇다면 map함수는 왜 사용될까?

분명히 이유가 있을것이다. 아래의 예제를 토대로 이해해보자

 

<예제1>

nums 라는 변수에 사용자로부터 입력을 받아,
split 함수를 이용해서 공백을 기준으로 입력값을 쪼개서 리스트를 만들어봅니다
* split은 기본적으로 문자열을 나누는 함수입니다.

nums = input().split()
print(nums)

#입력값 : 1 2 3 4 5
#결과값 : ['1', '2', '3', '4', '5']

# split을 사용하지않는경우 결과값
 #입력값 : 1 2 3 4 5
 #출력값 : 1 2 3 4 5

해당 리스트는 input().split() 이후에 자료형을 변환 해주지 않았으므로 여전히 문자열 (str) 자료입니다.

그렇다면 int형으로 변경 하고싶을때 어떻게 해야할까요.

 

아래와같은 과정을 거쳐야만 문자열을 숫자로 변경 가능합니다.

nums = input().split()

nums[0] = int(nums[0])
nums[1] = int(nums[1])
nums[2] = int(nums[2])
nums[3] = int(nums[3])
nums[4] = int(nums[4])

print(nums)

#입력값 : 1 2 3 4 5
#출력값 : [1, 2, 3, 4, 5]

 

더 효율적인 방법도 있겠죠?

for 문을 사용하면 더 효율적으로 변경 가능합니다. 

nums = input().split()

for i in range(5):
    nums[i] = int(nums[i])
    
print(nums)

#입력값: 1 2 3 4 5
#출력값: [1, 2, 3, 4, 5]

그러면 map 함수를 사용하면 어떻게될까요 

 

여기서 map 함수를 사용해서 int형으로 변환 한 nums는 출력결과 map object(객체) 라고 나오는것을 볼수 있습니다.

즉 map 고유의 형태로 저장되었다는 뜻입니다.

nums = input().split()

nums = map(int, nums)
print(nums)

#입력값 : 1 2 3 4 5
#출력값 : <map object at 0x0000024329831000>

해결방법으로는 다시 list()로 한번더 감싸주어야합니다.

 

기존에 str형 리스트가 int형 리스트로 변경되었습니다.

 

nums = input().split()

nums = list(map(int, nums))
print(nums)
 
#입력값: 1 2 3 4 5
#출력값: [1, 2, 3, 4, 5]

 

 

생각정리하기 
________________________________________________________________________

 

maping 이라는 단어를 보면 하나의 값을 다른값으로 대응시킨다는 의미입니다

즉 지도를 뜩하는 map에서 나오는 말입니다.

지도에 표시한 정보가 현실세계와 1:1 대응하듯이 매핑을 통해 하나의 값을 다른 값으로  1:1 대응시킨다는 의미입니다


출처: http://wiki.hash.kr/index.php/%EB%A7%A4%ED%95%91