본문 바로가기
[Python]/python 개념

[python] 리스트에 map 사용하기

by 코드몽규 2022. 2. 12.
반응형

이번 시간에는 리스트에 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               # 맵 객체는 변수 여러 개에 저장할 수 있음

 

반응형

댓글