[Python] map 함수에 관하여

tech_bae·2024년 10월 4일
1

Python

목록 보기
4/6
post-thumbnail

이번 게시글에서는 pythonmap함수에 대해 공부한 내용을 정리해보겠습니다.

map 함수란

map함수의 기본 문법은 아래와 같습니다.

map(function, iterable)

map함수는 최소 두개(함수, 반복가능한 자료형)의 매개변수를 받습니다.
map함수는 리스트와 같은 iterable의 각 요소에 함수를 적용한 값들을 iterator로 반환합니다.

참고로 iteratorlist와 같은 iterable과 다릅니다. 따라서 list로 출력이나 반환을 하고싶다면 꼭 list를 사용하여 리스트 형식으로 변환하여야 합니다.
(iterator에 관해선 다음 게시글을 통해 정리해보겠습니다.)

예를 들어 map(값을 제곱하는 함수, [1,2,3,4,5])라고 코딩하면
map함수는 각 list의 요소에 값을 차례대로 제곱하여 반환합니다

아래에서 실제로 위의 가정를 예제로 만들어 보여드리겠습니다.

def square(x):
	return x**2
    
odds = [1,3,5,7,9,11,13,15]

squared_odds = map(square, odds)

print(list(squared_odds))

#출력
[1, 9, 25, 49, 81, 121, 169, 225]

위 코드에서 map함수는 인수값을 제곱하여 반환하는 함수인 square()함수를 odds리스트의 각 요소에 차례대로 적용합니다. 그러므로 squared_oddsodds의 각 요소를 제곱한 값들을 가지게 됩니다. 이후 리스트 형식으로 변환하여 출력합니다.

map: 여러개의 iterable 적용

map함수는 iterable객체를 여러 개 입력받는 것도 가능합니다.

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

예제로 알아보겠습니다. 아래 예제는 두 개의 list값들을 서로 곱하는 예제입니다.

def time(x,y):
	return x*y
    
num1 = [1,3,5,7,9,11,13,15]
num2 = [2,4,6,8,10,12,14,16]
timed_nums = map(time, num1, num2)
print(list(timed_nums))

#출력
[2, 12, 30, 56, 90, 132, 182, 240]

이처럼 map함수는 여러 iterable을 입력받아 사용 할 수도 있습니다.

이때 iterable을 여러 개 map함수에 사용 할 때는 가장 짧은 길이의 iterable의 길이만큼 함수가 반복적으로 실행되는 것을 기억 해야 합니다.

map: lambda 적용

map함수는 함수인자로 lambda도 사용이 가능합니다.
이는 일회성 함수를 map에 적용하는 경우에 효율적을 사용이 가능할 것 같습니다.

num = [15,16,17,18,19]

def square(x):
    return x**2

nolambda = map(square, num)
print("def :", list(nolambda))

yeslambda = map(lambda x: x**2, num)
print("lambde :",list(yeslambda))

#출력
def : [225, 256, 289, 324, 361]
lambde : [225, 256, 289, 324, 361]
profile
전 아무고토 몰루고 아무고토 못해여

0개의 댓글