SW사관학교 정글 개발일지 - 1주차 Python 정리
📍map()
실수가 저장된 리스트의 모든 요소를 정수로 변환하려면 아래와 같을 수 있습니다.
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]
for에 range(len(a))를 사용해서 인덱스를 가져왔습니다.
그리고 가져온 인덱스로 요소 하나 하나에 접근한 뒤 int로 변환하여 다시 저장했습니다.
이러한 경우에 map을 사용하면 편합니다.
map()은 리스트(list), 반복 가능한 객체에 대해 각각의 요소들을 지정된 함수로 처리 해주는 함수 입니다.
1) map에 리스트(list)를 넣어서 사용
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a))
print(a) # [1, 2, 3, 4]
map에 int와 리스트를 넣으면 리스트의 모든 요소를 int를 사용해서 변환합니다.
그 다음에 list를 사용해서 map의 결과를 다시 리스트로 만들어줍니다.
그리고 map()은 맵 객체를 만듭니다.
2) map에 반복 가능한 객체를 넣어서 사용
a = list(map(str, range(10)))
print(a) # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
range를 사용해서 숫자를 만든 뒤 숫자를 문자열로 변환했습니다.
3) input().split()과 map
지금까지 input().split()으로 값을 여러 개 입력받고 정수, 실수로 변환할 때도 map을 사용했었죠? 사실 input().split()의 결과가 문자열 리스트라서 map을 사용할 수 있었습니다.
다음과 같이 input().split()을 사용한 뒤에 변수 한 개에 저장해보면 리스트인지 확인할 수 있습니다.
a = input().split() # 입력 : 10 20
print(a) # ['10', '20']
10 20을 입력하면 ['10', '20']처럼 문자열 두 개가 들어있는 리스트가 만들어집니다.
이제 map을 사용해서 정수로 변환해봅니다.
a = map(int, input().split()) # 입력 : 10 20
print(a) # <map object at 0x03DFB0D0>
list(a) # [10, 20]
다시 10 20을 입력하면 맵 객체(map object)가 만들어집니다.
이 상태로는 안에 들어있는 값을 볼 수 없으므로 list를 사용해서 리스트로 출력했습니다.
리스트를 보면 [10, 20]처럼 정수 두 개가 들어있습니다.
이 리스트 [10, 20]을 변수 두 개에 저장하면
지금까지 사용한 a, b = map(int, input().split())와 같은 동작이 됩니다.
map이 반환하는 맵 객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹(unpacking)이 가능합니다.
그래서 a, b = map(int, input().split())처럼 list를 생략이 가능합니다.
a, b = map(int, input().split())을 풀어서 쓰면 다음과 같은 코드가 됩니다.
# 설명1 - 구조
a = input().split() # input().split()의 결과는 문자열 리스트
x = map(int, a) # 리스트의 요소를 int로 변환, 결과는 맵 객체
a, b = x # 맵 객체는 변수 여러 개에 저장할 수 있음
# 설명2 - 사용
a = input().split() # 입력 : 10 20
x = map(int, a) # <map object at 0x1023a9cd0>
a, b = x # a = 10, b =20
파이썬은 이렇게 여러 가지 함수와 객체를 조합해서 결과를 만들어냅니다.
Author And Source
이 문제에 관하여(SW사관학교 정글 개발일지 - 1주차 Python 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jakob1/SW사관학교-정글-개발일지-1주차-Python-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)