데이터분석 기록일지

파이썬

map()함수

야하루 2024. 6. 9. 17:46

map()은 특정 함수를 이터러블의 모든 항목에 적용하고, 그 결과를 새로운 이터러블로 반환하는 역할을 한다.

-> 즉, 주어진 함수를 반복 가능한 객체의 모든 요소에 적용한다.

 

+)이터러블(iterable)은 반복 가능한 객체를 의미한다. (for 루프를 사용하여 순회 가능)  ex:리스트, 튜플, 문자열, range() ....

혹은 iter()함수를 호출하여 이터레이터(iterator)를 반환할 수 있는 객체 (=> 따로  포스팅)

 

 

for문을 간단하게 표현 가능하다!

#사용법
map(함수, 이터러블)
#이때 함수자리에 연산같은건 안되고, 정의된 !함수!만 들어갈 수 있다.
#연산을 넣고 싶으면 lambda사용
#예제
a= [1,2,3,4,5]
''.join(map(str, a))
# 출력 12345 (type = str)


map(str,a)
# 출력 <map at 0x7b6b6f362890>


list(map(str,a))
#출력 ['1', '2', '3', '4', '5']

+)   .join()은 문자열 삽입하는 함수

 

 


또한 map()함수는 한 번에 하나의 함수만 적용할 수 있다.

만약 여러 함수를 순차적으로 적용하려면 map() 함수를 연속으로 사용하면 된다.

map(함수1, map(함수2, 이터러블))

 

 


 

그냥 map() 함수만 출력하면, 저런  <map object at 0x7b6ba2033c40>  이라는 map 객체가 나온다.

map 객체는 파이썬의 내장 함수인 map() 의 결과로 반환되는 특별한 종류의 객체이다. 

 

(map 객체는 메모리를 효율적으로 사용하기 위해 지연 평가(lazy evaluation)를 사용하는데, 이는 map 객체가 생성될 때 모든 연산이 즉시 수행되지 않고, 요소에 접근할 때만 연산이 수행된다는 것을 의미한다. 따라서 map 객체는 큰 데이터 세트에 대한 연산을 메모리에 모두 저장하지 않고도 처리할 수 있다. 저 <map at 0x7b6b6f362890>표현은 map 객체가 메모리의 어느 위치에 저장되어 있는지를 나타낸다.

(이때, map 객체가 메모리에 저장되어 있는 것과 map 객체가 수행하는 연산의 결과가 모두 메모리에 저장되어 있다는 것은 다른 말이다.)

map 객체를 리스트나 튜플로 변환하면 이때 모든 요소에 접근하게 되므로, 모든 연산이 수행되어 그 결과를 볼 수 있게 된다.)

 

즉, 맵 객체는 바로 출력할 수 없기에 리스트나 튜플 등으로 변환해서 값을 볼 수 있다.