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