함수 바르게 사용하기
<목차>
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 대응시킨다는 의미입니다