map함수는 파이썬의 기초이지만 기초여서 자세히 공부를 하지 않았던것 같습니다.
이번 기회에 map함수에 대해서 깊게 공부해 보도록 하겠습니다!
👩💻map함수
map(function, iterable)
map 함수의 모양은 위와 같습니다.
첫 번째 매개변수로는 함수가 오고
두 번째 매개변수로는 반복 가능한 자료형(리스트, 튜플 등)이 옵니다.
map 함수의 반환 값은 map 객체이기 때문에 콘솔창에서 쉽게 볼 수 없기 때문에
해당 자료형을 list 혹은 tuple로 변환시켜주어야 합니다.
💪map함수의 특징
- 지연평가(lazy evaluation) 방식: map() 함수는 lazy evaluation 방식을 사용합니다. lazy evaluation이란 필요한 시점까지 연산을 늦추는 방식으로, 불필요한 연산을 최소화하여 성능을 향상시키는 방법입니다.
- 간결성: map() 함수를 이용하면 반복문을 작성하지 않아도, 한 줄의 코드로 여러 개의 리스트를 동시에 처리할 수 있습니다.
- 가독성: map() 함수를 이용하면, 코드의 가독성을 높일 수 있습니다.
- 성능: map() 함수는 내부적으로 C로 구현되어 있으므로, 파이썬 반복문보다 빠르게 처리할 수 있습니다.
- 메모리 사용량: map() 함수는 새로운 리스트를 생성하지 않고, iterator 객체를 반환하므로, 메모리 사용량을 최소화할 수 있습니다. 하지만, 매우 큰 이터레이터 객체를 처리할 경우, 메모리 사용량이 매우 높아질 수 있습니다.
- 제약사항: map() 함수는 입력된 모든 이터레이터 객체의 길이가 같아야 하므로, 이러한 제약 사항을 고려하여 사용해야 합니다.
전체적으로 map함수는 빠르다는 것이 특징일 수 있겠습니다.
👩💻map함수를 사용하는 것과 사용하지 않은 것 차이
똑같은 작업을 map을 이용했을 때와 하지 않았을 때를 비교해보겠습니다.
# 리스트에 값을 하나씩 더해서 새로운 리스트를 만드는 작업
arr = [1, 2, 3, 4, 5]
# for 반복문 이용
result1 = []
for val in arr:
result1.append(val + 1)
print('result1:',result1)
# map 함수 이용
def add_one(n):
return n + 1
result2 = list(map(add_one, arr)) # map반환을 list 로 변환
print('result2 :',result2)

이런 식으로 만약에 map 함수를 이용하지 않으면 반복문을 이용해서 일일이 리스트 요소에 접근한 뒤,
계산을 해서 리스트에 하나씩 또 append 해주어야 하는 번거로움이 있습니다.
하지만, map 함수를 이용하면 우리는 요소에 적용할 함수 하나만 딱 넘겨준다면
자동적으로 리스트를 함수에 적용해서 map 객체를 반환해 줍니다.
우리는 그걸 list로 형 변환해서 사용하면 됩니다.
❗코드의 재발견❗
a,b = map(int,input().split())
알고리즘을 풀 때 습관적으로 이것을 적었습니다.
하지만 정확히 어떤점이 좋기 때문에 쓰고, 어떤 원리가 담겨있는지는 알아보지 않은채 써왔습니다.
input().split()을 하게되면 한줄에 있는 문장이 String형식으로 입력되게 됩니다.
하지만 이것을 int형으로 써야하는 경우가 많으므로 int()함수를 이용하여 String을 int로 형 변환을 해주는 역할을 합니다!
😊느낀점😊
항상 찾아봐야지 찾아봐야지 하면서 끝까지 미루다가 오늘 정확하게 알아보게 되어 부끄러우면서
가려웠던 곳을 긁은 느낌이라 시원하기도합니다!
앞으로도 남들이 이렇게 쓰니깐 나도 이렇게 써야지 라는 마인드는 버리고
이걸 쓰는 이유에 대해서 더욱 깊이 알아보려는 의지를 가져야 겠다고 느낄 수 있었던 시간입니다 :)
'🧮Programming > Python' 카테고리의 다른 글
| [Python] 입력 값 다중 리스트로 만드는 법 (0) | 2024.02.13 |
|---|---|
| [Python] 람다(lambda)함수 (0) | 2024.02.12 |
| [Python] 정렬 함수 (0) | 2024.02.11 |
| [Python] join함수 (0) | 2024.02.08 |
| [Python] 순열(Permutations)과 조합(Combinations) (0) | 2024.02.08 |