본문 바로가기
coding 📟/python 💻

[Python] map 함수

by 고돌한 데이터 사이언스 2023. 8. 20.
반응형

개요


python 을 사용하다보면 map 함수를 자주 접하게된다.

 

기본적으로 람다(lambda) * 장점 : 메모리 절약, 이슈 : elif 사용불가

와 자주 사용되는 함수로 유용하게 많이 쓰인다.

 

그렇다면 문법, 동작, 장점, 주의사항에 대해서 정리해보자

 

문법


map(function, iterable)

사용법은 간단하다

매개인자로 function(각 요소에 적용할 함수), iterable한 객체를 넣어 주면된다.

 

iterable 에 대한 감이 잡히지 않는다면 아래의 글을 참조하자.

 

https://kodorricoding.tistory.com/3

 

[Python] Iterator(이터레이터) Iterable(이터러블) 정리 비교

git 이나 여러 레퍼런스에서 머신러닝 관련 소스코드를 참고하다 보면 generator 패턴을 종종 볼 수 있다. 대충 어떤 패턴인지는 인지하고 있지만, 좀 더 자세하게 알아보고자 정리를 해본다. 우선

kodorricoding.tistory.com

 

함수의 반환값은 iterator 객체이며,

이에따라 앞서 변수를 지정해줄 경우 변수 여러 개에 저장하는 unpacking 언패킹이 가능하다.

temp = map(int, input().split())
10 20 (입력)
>>> temp
<map object at 0x03DFB0D0>
>>> list(temp)
[10, 20]

## unpacking

a,b = map(int, input().split())
>>> a
10
>>> b
20

동작


- map 함수 호출 시 파라미터로 전달된 function 함수와 iterable 한 객체를 받는다.

- 그 후 가장 짧은 길이를 가진 iterable 객체의 길이만큼 fnction 함수를 반복적으로 적용한다.

- function함수는 각 iterable 객체의 요소들을 인자로 받아 처리한다.

- 실행결과는 새로운 iterator 객체에 저장된다.

- map() 의 반환 값으로 iterator 객체를 반환한다.

 

즉, map() 함수는 입력된 iterable 객체들의 각 요소를 하나씩 가져와 function 함수에 적용하고, 그 결과를 새로운 iterator 반환합니다. map() 함수는 generator 객체를 반환하며, iterator와 비슷한 역할을 합니다.

 

장점


- 지연평가(lazy evaluation) 방식

해당 함수는 지연평가 방식을 사용함으로써, 필요한 시점까지 연산을 늦춰, 불필요한 연산을 최소화한다.

이에 따라 결과값이 모두 메모리에 저장되지 않고, 부분만 계산하여 처리 가능하기 때문에 메모리 비용을 아낄 수 있다.

 

- 간결성, 가독성

해당 함수를 사용 시 반복문 작성이 필요하지 않아, 인라인으로 여러 개의 리스트를 동시에 처리 가능하다.

이로인해 코드의 간결성과 가독성에 도움이 된다.

 

- 좋은 성능

해당 함수는 내부적으로 C로 구현되어 있어, 파이썬 반복문보다 빠르게 처리할 수 있다.

또한 지연평가 방식으로 인해 메모리 비용을 아낄 수 있다.

 

주의사항


- 해당함수는 새로운 리스트가 아닌 iterator 객체를 반환하기때문에, 메모리 비용을 아낄 수 있지만,

오히려 매우 큰 이터레이터 객체를 처리할 경우, 메모리 사용량이 매우 높아질 수 있다.

 

- 해당함수는 입력된 모든 이터레이터 객체의 길이가 같아야한다.

 

 

 

참고

https://dotiromoook.tistory.com/28

 

[python] map 함수 사용법, 동작원리 및 특징 (예제포함)

python에 map 함수에 대해 알아봅시다. Python의 map() 함수는 여러 개의 데이터를 받아서 각각의 요소에 함수를 적용한 결과를 반환하는 내장 함수입니다. 리스트, 튜플 등의 반복 가능한(iterable) 객체

dotiromoook.tistory.com

 

반응형

댓글