Hey Tech

[파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식) 본문

SW 개발/Python

[파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식)

Tony Park (토니) 2021. 2. 24. 09:50
728x90
반응형

map 함수란?

map 함수 *반복 가능한 객체(iterable object)를 입력받고 각 요소에 연산을 수행(맵핑, mapping)하는 함수입니다.

*반복 가능한 객체(iterable object)말 그대로 반복이 가능한 객체로서 요소가 하나의 객체에 여러 개가 들어있고, 한 번에 하나의 요소씩 사용할 수 있는 객체를 말합니다. 대표적으로는 문자열(string), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있습니다.

연습 문제

Q1. 리스트에 1부터 10까지의 정수가 담겼을 때 각 요소별 제곱 값을 따로 리스트에 저장하여 출력하는 코드를 작성하시오.

(1)  map 함수를 사용하지 않은 코드

# 입력된 값을 제곱하여 리턴하는 함수
def square_function(n):
    return n**2

target = list(range(1, 11))
result = []
for value in target:
    result.append(square_function(value))
print(result) # 실행 결과: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

입력받는 값을 제곱하여 반환하는 함수를 작성하였으며 반복문을 통해 리스트 내 요소를 하나씩 작성한 함수에 전달하는 코드입니다.

(2)  map 함수를 사용한 코드

# 입력된 값을 제곱하여 리턴하는 함수
def square_function(n):
    return n**2
        
target = list(range(1, 11))
result = list(map(square_function, target))
print(result) # 실행 결과: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

위와 같이 map 함수를 활용함으로써 반복문 및 리스트 초기화 코드를 생략할 수 있습니다.

(3)  map, lambda 표현식을 사용한 코드

지난 포스팅에서 다룬 것처럼, 함수를 직접 정의하고 일회성으로 사용하는 것은 메모리의 낭비를 유발합니다.

이럴 때는 람다 표현식을 활용하면 메모리 낭비를 막고 코드를 간결하게 작성할 수 있습니다.

target = list(range(1, 11))
result = list(map(lambda n : n**2, target))
print(result) # 실행 결과: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

위와 같이 말이죠.

참고할 만한 포스팅

1.   [파이썬] lambda 함수는 언제, 어떻게 쓸까?
2.  [파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식)
3.  [파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식)
4.  [파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식)

포스팅 내용에 오류가 있다면 아래에 댓글 남겨주세요.

그럼 오늘도 건강한 하루 보내시길 바랍니다 :)

고맙습니다.

 

728x90
반응형