Map 함수

  • Sequence 자료형(List, Tuple)의 각 원소(element)에 동일한 function을 적용함
  • Python 3 부터는 사용하지 않는 것을 추천하지만, Legacy library 나 다양한 머신러닝 코드에서 여전히 사용중
  • 모든 원소에 함수를 적용하고 싶을 때 자주 사용한다.
  • map( ) 만을 적용한 결과는 값의 주소가 출력되고, list(map( )) 을 같이 사용해주어야 적용된 결과가 출력된다.

 

map(Function_name, List_data)

  1. Function_name = 적용시킬 함수
  2. List_data = Sequence 자료형

 

Ex 1) 기본적인 map 함수 사용 예

ex = [1, 2, 3, 4, 5]
f = lambda x: x ** 2
print(map(f, ex)) # 주소 출력
print(list(map(f, ex)))

<map at 0x10eb2db00>

[2, 4, 6, 8, 10]

 

 

Ex 1-1) map만 사용하여 값을 출력하는 방법

ex = [1, 2, 3, 4, 5]
f = lambda x: x ** 2
print(f, ex)    # map 함수만 적용하면 값의 주소가 출력

for i in map(f, ex):    # for loop을 사용하면 값이 출력
    print(i)

<map object at 0x10f16c9e8>

1

4

9

16

25

 

 

Ex 2) zip 함수와 동일한 결과 출력하기

  • 2개 이상의 Sequence 자료형에 대해 사용할 경우, 같은 인덱스에 있는 원소와 연산한다.
ex = [1, 2, 3, 4, 5]
f = lambda x, y: x + y
print(list(map(f, ex, ex)))

[2, 4, 6, 8, 10]

 

 

Ex 3) lambda 함수 + Filter(if문)

  • lambda 와 Filter를 함께 사용할 때는 List comprehension과는 달리 Filter는 조건을 만족하지 않을 때의 else 값을 반드시 넣어주어야함
# 만족할 때는 제곱, 만족하지 않으면 원래의 값 그대로
ex = [1, 2, 3, 4, 5]
list(map(
    lambda x: x ** 2 if x % 2 == 0 else x,
    ex))

[1, 4, 3, 16, 5]

 

 

Ex 3-1) List comprehension으로 Ex 3) 표현해보기

ex = [1, 2, 3, 4, 5]
result = [i for i in ex if i % 2 == 0 else i]
print(result)

[1, 4, 3, 16, 5]

 

 

'✍🏻Language & FrameWork > Python' 카테고리의 다른 글

[Python for ML] Asterisk  (0) 2024.01.02
[Python for ML] Reduce 함수  (0) 2024.01.01
[Python for ML] Lambda 함수  (0) 2024.01.01
[Python for ML] Zip 함수  (0) 2024.01.01
[Python for ML] Enumerate 함수  (0) 2023.12.30