본문 바로가기
Python

[Python] 파이썬 map() 함수 사용법 및 예제

by A6K 2022. 11. 8.

map() 함수는 파이썬의 튜플, 리스트, 문자열 같은 시퀀스 자료형에 사용할 수 있는 유용한 함수다. 시퀀스 자료형에 들어있는 엘리먼트들에 어떤 작업을 가하고, 그 결과를 얻어오는데 사용된다.

파이썬 map() 함수

map() 함수는 다음과 같이 생겼다.

map(함수, 시퀀스)

map() 함수의 첫 번째 인자로는 함수가 온다. 두 번째 인자로는 리스트, 튜플, 문자열 같은 시퀀스 자료형의 객체가 온다. 시퀀스 자료형의 모든 엘리먼트에 함수를 적용한 결과를 또 다른 시퀀스 자료형으로 담아준다. map() 함수 자체는 map 객체를 리턴하기 때문에 해당 자료형을 list 혹은 tuple로 변환시켜줘야한다.

예를 들어보자.

def increase(a):
  return a + 1
  
numbers = [1, 3, 5, 7, 9]
new_numbers = list(map(increase, numbers))
print(new_numbers)

# [2, 4, 6, 8, 10]

인자를 하나 받아서 1을 더해주는 increase() 함수를 정의했다. 그리고 1부터 10까지 홀수만 담고 있는 리스트에 map() 함수로 increase() 함수를 적용했다. 리턴되는 객체를 list() 함수로 감싸주면 1, 3, 5, 7, 9에 1을 더한 2, 4, 6, 8, 10을 엘리먼트로 담고 있는 리스트가 만들어진다.

map() 함수를 사용하지 않고 반복문을 이용해서 동일한 동작을 구현하면 다음과 같다.

def increase(a):
  return a + 1
  
numbers = [1, 3, 5, 7, 9]
new_numbers = list()
for i in numbers:
  new_numbers.append(increase(i))
  
print(new_numbers)

# [2, 4, 6, 8, 10]

소스코드가 조금 더 길어졌다. 시퀀스 자료형 객체에 있는 엘리먼트에 어떤 함수를 적용하고, 그 결과를 또 다른 시퀀스 자료형에 담아오는 작업은 매우 흔한 작업이다. 이런 패턴으로 사용되는 코드의 경우 map() 함수를 이용하면 좀 더 짧은 코드로 간단하게 구현할 수 있다.

람다 함수와 map()

파이썬 map() 함수는 람다 함수와 함께 사용되는 경우가 많다. 람다 함수는 이름이 없는 함수, 즉 익명함수(Anonymous functions)을 의미한다. 람다도 함수이므로 map()과 함께 사용할 수 있다.

위 예제를 람다함수를 이용해서 다시 작성해보자.

numbers = [1, 3, 5, 7, 9]
new_numbers = list(map(lambda a : a + 1, numbers))
print(new_numbers)

# [2, 4, 6, 8, 10]

람다 함수로 increase() 함수를 대체했다. map() 함수의 인자로 넘겨줄 함수가 a + 1 처럼 매우 짧거나 간단한 경우 그리고 재사용을 할 필요가 없는 경우에는 람다 함수를 이용하는게 좀 더 효율적이다.


 

파이썬 스크립트 작성에 도움되는 글 모음

파이썬으로 프로그램을 작성할 때 도움되는 글들을 모아본다. 개발환경 [Python] macOS에 파이참 설치 [Python] 파이참 깃허브 연동 [Python] 파이썬 PIP란? [Python] VSCode를 이용한 개발환경 [Python] python3를

hbase.tistory.com

 

댓글