수학과의 좌충우돌 프로그래밍

python map() 함수에 대해 알아보자! 본문

프로그래밍 언어/Python

python map() 함수에 대해 알아보자!

ssung.k 2019. 1. 1. 11:13

안녕하세요 강민성입니다.


오늘은 파이썬 기본 문법에 대해서 알아보고자 합니다.


그 중에서도 map 함수에 대해서 알아보겠습니다.


저는 알고리즘 공부를 하다가 map 함수가 도움이 많이 되었습니다.


어떤 함수인지 같이 살펴보시죠!



map 함수에 대해서 알아보자!




map 함수는 두 가지 인자를 받게 됩니다.


첫 번째 인자로 함수를 받게 되고, 두 번째 인자로 반복가능한 자료형을 받게 됩니다.


map(function , iterable, ...)


같은 형태를 가집니다.


그리고 iterable 한 데이터 안의 각 item들을 함수 인자로 전달하여 결과를 반환하는 함수입니다.


여기서 반환 형태에 대해   기존 python2 에서 python3 으로 바뀌면서 변화가 있었습니다.


기존 python2에서는 list형으로 반환을 했지만 python3 에서는 generator 형으로 반환을 합니다.


generator 형이 무엇인지는 다음에 다시 알아보도록 하고 지금은 다시 list형으로 바꿔줘야한다!


라고만 기억하시면 될 것 같습니다.


그러면 map 함수의 쓰임을 보도록 하겠습니다.


1
2
3
4
5
6
7
8
test = [1,2,3,4]
 
def func(x):
    return x * 2
 
print(list(map(func, test)))
 
# [2, 4, 6, 8]
cs



test 라는 iterable 한 인자 list를 선언하고,

 func 이라는 인자를 받아 2배를 해줘서 return 해주는 함수를 만들어 주었습니다.

그 후, map 을 사용하면 list의 안의 각 원소들이 func를 거치면서 2배가 되고

이를 다시 list로 만들어주면 각 원소를 두 배한 list가 만들어집니다.



이 map 함수가 알고리즘 시, 유용하게 쓰이게 됩니다.

문제를 풀다보면 입력값이 연속된 정수로 들어오는 경우가 있습니다.

위의 예와 동일하게

1 2 3 4

가 연속적으로 입력이 된다고 생각을 해보겠습니다.

이를 입력받기 위해 input 함수와 split함수를 사용하면

1
2
3
4
5
test = input().split()
 
print(test)
 
#['1', '2', '3', '4']
cs


입력을 받고 list로 바꿀 수 있었습니다.


하지만 이럴 경우, 리스트 안의 각 원소의 type이 int 가 아니라 str 인걸 확인 할 수 있습니다.


이럴 경우, 각 원소들을 int로 바꿔줘야 합니다.


1
2
3
4
5
6
7
8
test = input().split()
 
for i in range(len(test)):
    test[i] = int(test[i])
 
print(test)
 
# [1, 2, 3, 4]
cs


다음과 같이 반복문을 통해서 각 원소를 int 형으로 바꿔줄 수도 있지만


이 과정을 바로 map 함수가 대신 해주게 됩니다.


1
2
3
4
5
test = list(map(int, input().split()))
 
print(test)
 
# [1, 2, 3, 4]
cs


다음을 보도록 하겠습니다.


먼저 input().split() 을 통해 


[ '1' , '2' ,'3' , '4'] 


다음과 같은 list가 생성이 될 것 입니다.


이제 map 함수를 통해 각 원소들을 int로 바꿔주고 다시 list로 바꿔주면 


다음과 같이 원하는 값을 얻을 수 있을 겁니다.




마무리


알고리즘 공부를 처음 시작할 때는 값을 받고 변환하는 법도 몰라서


한참을 고생했던 것 같습니다.


데이터를 입력받고 원하는 형태로 만드는 것이 중요하니


map 함수에 대해 잘 숙지하고 열심히 공부 하시길 바랍니다.


감사합니다 :)

Comments