[Python] map 함수와 lambda 함수

JinUk Lee·2024년 3월 20일

python 개념 공부

목록 보기
4/14

map함수는 특정 함수에 반복가능한 객체의 원소를 각각 넣어서 실행하는 함수이다.

아래의 예시를 보자

map 기본 사용법

A = [1,2,3,4,5]

def plus(a):
	return a+3

A 리스트가 있고 plus 라는 인자에 3을 더해서 반환시켜주는 함수가 있다고하자.

new_A = list(map(plus,A))
print(new_A) # [4,5,6,7,8]

A의 원소 1,2,3,4,5가 각각 plus 함수의 인자로 들어가서 실행되었다.

또한, 아래처럼 반복가능한 객체면 여러 인자를 받을 수 있다.


A = [1,2,3]
B = [10,20,30]

def testlpus(a,b):
    return a+b
    
new_A = list(map(testlpus,A,B))

print(new_A) # [11,22,33]

그런데 문제는 map의 인자로 올수있는 인자는 반복가능한(iterable) 인자뿐이라는 것이다.

만약, map함수를 사용하고싶은 함수가 인자로 반복불가능한 인자, 반복 가능한 인자를 동시에 받는다면 map함수의 사용이 힘들어진다.

이런 경우에 두 가지 해결방안이 있다.

직접 반복가능한 객체로 만들기

만약, test 라는 문자열을 인자로 받았다면, ['test', 'test' ... 'test'] 이런 식으로 반복횟수만큼 문자열을 담은 리스트를 만드는 것이다.

단순하지만 쉬운 해결방법이다.

lambda 사용하기

두번째 해결방법이 lambda 함수를 활용하는 것이다.

lambda 함수는 함수를 임의로 만들어서 사용하는 개념인데, 주로 sort에서 많이 볼 수 있었다.

활용법은 다음과 같다.


A = [1,2,3,4,5]

def testmap(number,number_list):

    temt = number+number_list
    answer.append(temt)

testmap 함수는 숫자와 숫자 리스트를 인자로 받는 함수이다.

number 인자가 반복가능하지않아 일반적으로는 map함수 사용이 불가능하지만 lambda 함수를 사용해서 해결할 수 있다.


new_A = list(map(lambda x:testmap(100,x), A))
print(answer) # [101,102,103,104,105]
profile
개발자 지망생

0개의 댓글