개요
python 을 사용하다보면 map 함수를 자주 접하게된다.
기본적으로 람다(lambda) * 장점 : 메모리 절약, 이슈 : elif 사용불가
와 자주 사용되는 함수로 유용하게 많이 쓰인다.
그렇다면 문법, 동작, 장점, 주의사항에 대해서 정리해보자
문법
map(function, iterable)
사용법은 간단하다
매개인자로 function(각 요소에 적용할 함수), iterable한 객체를 넣어 주면된다.
iterable 에 대한 감이 잡히지 않는다면 아래의 글을 참조하자.
https://kodorricoding.tistory.com/3
함수의 반환값은 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
'coding 📟 > python 💻' 카테고리의 다른 글
[Python] 파이썬이 모듈과 패키지를 찾는 방법 ModuleNotFoundError (0) | 2022.05.24 |
---|---|
[Python] __name__ 변수 __main__ 이란 (0) | 2022.05.24 |
[Python] 딕셔너리 컴프리헨션 + 집합, 제너레이터 컴프리헨션 (0) | 2022.05.20 |
[Python] 리스트 컴프리헨션 List Comprension (if else) (0) | 2022.05.20 |
[Python] 가상환경 pyenv windows 윈도우 설치 사용법 (1) | 2022.05.13 |
댓글