map 함수
작성 완료
- 여러 개의 데이터를 한 번에 다른 형태로 변화하기 위해 사용한다.
- map 함수는 원본 리스트를 변경하지 않고 새 리스트를 생성한다.
- map 함수는 map 타입으로 결과를 리턴하기 때문에 리스트나 튜플 등으로 변환해야 한다.
- map 함수는 리스트의 요소를 지정된 함수로 처리한다.
x = list(range(5))
x
def two_times(x):
return x * 2
y = two_times(x)
y
z = list(map(two_times, x))
z
- map(함수, 반복가능한 객체)
x = [1.1, 2.1, 3.1, 4.1]
y = map(int, x)
print(y)
- map 함수는 map 타입으로 결과를 리턴하기 때문에 리스트나 튜플 등으로 변환한다. $\rightarrow [\star$] 변환하지 않으면 위와 같은 결과를 출력한다. [$\star$]
- print(y)하지 않고 그냥 y만 입력해도 된다.
x = [1.1, 2.1, 3.1, 4.1]
y = list(map(int, x))
y
def minus(a):
return a - 0.1
list(map(minus, x))
- minus 함수는 map 함수를 위해 한 번 쓰고 버려질 운명이다. 만드는게 귀찮음...
x = [1.1, 2.1, 3.1, 4.1]
list(map(lambda a: a - 0.1, x))
- input()함수는 c언어의 scanf()함수와 비슷하다.
z = input()
z
- input()으로 입력받은 값은 문자열이다.
n = input()
type(n)
- input()함수에서 안내문구를 추가할 수 도 있다.
Q = input('숫자 하나를 입력하세요:')
Q
- input()함수의 출력값을 문자열이 아닌 다른 자료형으로 바꾸고 싶다면?
w = int(input('숫자 하나를 입력하세요:'))
type(w)
- input().split("기준문자열")을 사용하면 입력값을 변수 여러 개에 저장할 수 있다.
- split()에서 "기준문자열"이 없는 즉 default는 공백이다.
a, b = input().split() # 입력받은 값을 공백(스페이스, 탭, 엔터 등)을 기준으로 분리
a, b
c = a, b
type(c)
- a와b가 문자열이다.
- int형으로 바꾸고 싶다면?
a, b = int(input().split())
- int()함수를 쓰면 될 것 같았는데 오류가 나온다
- error메시지를 읽어보니 int()함수는 무조건 a string, a bytes-like object or a number 여야 한다.(not 'list')
- a, b는 tuple인 것 같다.
- 그러면 어떻게 하지? $\longrightarrow$ map()함수를 쓰면 된다.
a, b = map(int, input().split()) # 입력받은 값을 정수로 변환
a, b
type(a)
type(b)
- a, b = map(int, input().split())을 풀어서 쓰면 다음과 같은 코드이다.
x = input().split() # input().split()의 결과는 문자열 리스트
m = map(int, x) # 리스트의 요소를 int형으로 변환, 결과는 맵 객체
a, b = m # 맵 객체는 변수 여러 개에 저장 가능
L = list(map(int, input().split()))
L
data = []
N = int(input())
for i in range(N):
data.append(list(map(int, input().split())))
data