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