반원 블로그

여러 개 사용자 입력처리 input + 파이썬 map 함수 본문

2018~/Python Skill Up

여러 개 사용자 입력처리 input + 파이썬 map 함수

반원_SemiCircle 2019. 8. 29. 11:06

파이썬 map함수

만일 [1,2,3,4,5,6,7,8,9] 숫자 리스트 각각에 특정 함수를 실행시키는 방법에는 어떤 것이 있을까?
예시로 입력1개에 출력 1개이며 곱하기 2를 해주는 함수가 있다고 가정하자.

def two_times(x):
    return x*2

기초적인 코딩으로 풀자면

def two_times(x):
    return x*2

src = list(range(10)) #숫자 리스트
res = []

for s in src:
    res.append(two_times(s))

print(src)
print(res)

이렇게 된다.

이렇게 연결가능 자료형(Iterable)에 대해서는 for를 사용하여 함수를 각각 적용해볼 수 있는데, map함수를 사용하면 한결 편해진다. 첫번째에는 함수, 두번째에는 연결형 데이터를 적으면 된다.

이를 이용하여 윗 코드를 변경해보면 다음처럼 나온다.

def two_times(x):
    return x*2

src = list(range(10)) #숫자 리스트
res = map(two_times, src)

print(src)
print(res)
print(list(res))

'''출력결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<map object at 0x0000025274971390>
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
'''

 

여러 개의 입력 처리

입력을 할 때 여러 개의 데이터가 띄어쓰기 식으로 들어온다하면 다음처럼 입력을 나눌 수 있다.

data = input("입력 : ").split()
print(data)

'''출력결과
입력 : 3 5 77 111 2 가나다 라라라
['3', '5', '77', '111', '2', '가나다', '라라라']
'''

 

map을 이용한 여러개 입력 처리

input은 무조건 문자열로 데이터를 받는다. 여러 개의 숫자를 받을 때 하나하나 int()로 형변환해주려면 또 for문을 해야한다. 여기서는 위에서 다룬 map을 써보자. 

data = map(int,input("숫자 입력 : ").split())
print(data)
print(list(data))

'''출력결과
숫자 입력 : 3 5 7 9
<map object at 0x00000162D824B2E8>
[3, 5, 7, 9]
'''

다음처럼 받은 변수 개수를 지정할 수도 있다.
(근데 이 경우엔 왼쪽 변수 숫자와 입력 개수가 같지않으면 에러가 발생한다)

a,b,c,d = map(int,input("숫자 입력 : ").split())
print(a)
print(b)

'''출력결과
숫자 입력 : 3 5 7 9
3
5
'''

 

참고 : https://wikidocs.net/32#map

Comments