반응형
이번 시간에는 리스트에 map을 사용하는 방법을 알아보겠다.
map은 리스트의 요소를 지정된 함수로 처리해주는 함수이다.
(*map은 원본 리스트를 변경하지 않고 새 리스트를 생성한다.)
사용 예시
- list(map(함수, 리스트))
- tuple(map(함수, 튜플))
사용 예)
1. 실수로 이루어진 a 리스트의 모든 요소를 정수로 변환하는 식 (기존)
a = [1.2, 2.5, 3.7, 4.6]
for i in range(len(a)):
a[i] = int(a[i])
print(a)
[1, 2, 3, 4]
2. 실수로 이루어진 a 리스트의 모든 요소를 정수로 변환하는 식 (map 사용)
a = [1.2, 1.3, 1.5, 1.7]
a = list(map(int,a))
print(a)
[1, 1, 1, 1]
이 외에도 map 에는 모든 반복 가능한 객체를 넣을 수 있다.
1. 반복가능한 객체 만들어보기 (str)
a = list(map(str,range(11)))
print(a)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
2. 반복가능한 객체 만들어보기 (int)
a = list(map(int,range(11)))
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3. 반복가능한 객체 만들어보기 (float)
a = list(map(float,range(11)))
print(a)
[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
그렇다면 map은 어떠한 원리로 지정된 범위만큼의 결과를 반복해서 리스트 형태로 뽑아주는 것일까?
우선 input(). split()을 이용하면 항상 결괏값이 리스트(list) 형태로 나온다는 것을 알 수 있다.
예시를 보면
a = input().split()
print(a)
['1', '10']
input(). split()을 통해 숫자 1 10을 입력하니 문자열이 들어가 있는 리스트가 완성되었다.
여기에 다시 map을 이용해서 문자열을 정수로 바꾸어주자
a = list(map(int, input().split()))
print(a)
1 10
[1, 10]
1과 10을 입력하니 정수 형태의 1 10을 담은 리스트가 반환되었다.
사실 map이 반환하는 객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹이 가능하다.
즉, 1과 10을 a와 b라는 변수로 생각하면
a, b = map(int, input().split())이며 이를 풀어서 쓰면 다음과 같은 코드가 된다.
x = input().split() # input().split()의 결과는 문자열 리스트
m = map(int, x) # 리스트의 요소를 int로 변환, 결과는 맵 객체
a, b = m # 맵 객체는 변수 여러 개에 저장할 수 있음
반응형
댓글