1. input()
한줄씩 통째로 입력받는 방벙으로 input()은 입력되는 모든 것을 문자열로 입력받는다.
In [1]:
a = input()
print(type(a))
10
<class 'str'>
10 20 30을 입력하면 '10 20 30' 으로 문자열 형태로 변수 a에 저장된다.
In [2]:
a = int(input())
10
In [3]:
a = int(input())
10 20 30
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-91869f0d3d8c> in <module>
----> 1 a = int(input())
ValueError: invalid literal for int() with base 10: '10 20 30 '
int()로 input()을 감싸주면 문자열을 정수로 변환하여 a에 저장할 수 있다.
그러나 10만을 입력한 경우는 변환이 가능하지만 10 20 30을 입력하면 정수로 변환이 불가능하여 에러가 발생한다.
2. split()
이러한 경우엔 split() 함수를 사용하여 공백 문자를 기준으로 나누고 나눈 값들을 리스트에 담아주면 된다.
In [6]:
a = input().split()
print(type(a))
['10', '20', '30']
<class 'list'>
10 20 30을 입력하였을 때 각각의 값이 리스트에 문자열로 입력이 되었다.
3. map
map은 리스트의 요소를 지정된 함수로 처리해주는 함수이다.
- list(map(함수, 리스크))
- tuple(map(함수, 튜플))
예를 들어 실수가 저장된 리스트가 있을 때 이 리스트의 모든 요소를 정수로 변환하려면 어떻게 해야 할까? 먼저 for 반복문을 사용해서 변환해보겠다.
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> for i in range(len(a)):
... a[i] = int(a[i])
...
>>> a
[1, 2, 3, 4]
|
cs |
for에 range(len(a))를 사용해서 인덱스를 가져왔다. 그리고 가져온 인덱스로 요소 하나 하나에 접근한 뒤 int로 변환하여 다시 저장했다.
매번 for 반복문으로 반복하면서 요소를 변환하려니 번거롭다. 이때는 map을 사용하면 편리하다.