[Python] map 함수 사용법, 동작원리 및 특징

규정규동·2024년 12월 10일
0
post-thumbnail

Python의 map() 메소드는 여러개의 데이터를 받아 각각의 요소에 함수를 적용한 결과를 반환하는 내장 함수입니다.

map() 메소드 기본 문법

map(function, iterable)
  • function: 각 요소에 적용할 함수
  • iterable: 함수를 적용할 데이터 집합

map() 메소드는 iterable의 각 요소에 대해 function 함수를 적용한 결과를 새로운 iterator로 반환합니다. 이때, function 함수는 각 요소를 인자로 받아서 처리하며, 함수의 반환값이 새로운 iterator의 각 요소가 됩니다.

map() 메소드 예제 1

map() 함수를 이용하여 간단한 예제를 살펴보겠습니다. 다음 코드는 리스트의 각 요소를 제곱하여 새로운 리스트를 반환하는 예제입니다.

def square(x):
    return x**2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))  # [1, 4, 9, 16, 25]

위 코드에서 square() 함수는 각 요소를 제곱하여 반환하는 함수입니다. numbers 리스트를 map() 함수를 이용하여 square() 함수를 적용한 결과를 반환한 후, list() 함수를 이용하여 새로운 리스트로 변환한 값을 출력합니다.

map() 메소드 예제 2 - 여러개의 iterable 객체를 받는 경우

map() 함수는 여러 개의 반복 가능한(iterable) 객체를 입력으로 받아서 여러 개의 데이터를 동시에 처리할 수 있습니다. 예를 들어, 다음 코드는 두 개의 리스트의 요소를 각각 더한 결과를 새로운 리스트로 반복 가능한(iterable) 객체를 여러 개 입력으로 받는 map() 함수의 기본 문법은 다음과 같습니다.

map(function, iterable1, iterable2, ...)

여러개의 반복 가능한 객체를 입력으로 받는 map() 메소드는 입력된 각 객체의 요소를 차례대로 하나씩 가져와서 funtion 함수에 인자로 전달합니다

여러 개의 반복 가능한 객체를 입력으로 받는 map() 함수를 이용하여 간단한 예제를 살펴보겠습니다. 다음 코드는 두 개의 리스트의 요소를 각각 더한 결과를 새로운 리스트로 반환하는 예제입니다.

def add(x, y):
    return x + y
numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]
added_numbers = map(add, numbers1, numbers2)
print(list(added_numbers))  # [11, 22, 33, 44, 55]

위 코드에서 add() 함수는 두 개의 숫자를 입력으로 받아서 더한 결과를 반환하는 함수입니다. numbers1과 numbers2 두 개의 리스트를 map() 함수를 이용하여 add() 함수를 적용한 결과를 반환한 후, list() 함수를 이용하여 새로운 리스트로 변환한 값을 출력합니다.

결과는 주석으로 단것 처럼 [11, 22, 33, 44, 55] 입니다.

map 함수 동작 원리

map() 함수의 동작 원리는 다음과 같습니다.

  • map() 함수가 호출되면, 입력으로 전달된 function 함수와 iterable 객체들을 파라미터로 받습니다.
  • map() 함수는 가장 짧은 길이를 가진 iterable 객체의 길이만큼 function 함수를 반복적으로 적용합니다.
  • function 함수는 각 iterable 객체에서 해당하는 인덱스의 요소들을 인자로 받아 처리합니다.
  • function 함수의 실행 결과는 새로운 이터레이터 객체에 저장됩니다.
    map() 함수가 반환하는 값은 iterator 객체입니다.

즉, map() 함수는 입력된 iterable 객체들의 각 요소를 하나씩 가져와 function 함수에 적용하고, 그 결과를 새로운 iterator 반환합니다. map() 함수는 generator 객체를 반환하며, iterator와 비슷한 역할을 합니다.

출처 : https://dotiromoook.tistory.com/28

profile
기록하는 개발자

0개의 댓글