Python/함수와 모듈

Python Lambda 함수, map 함수

Yonggyu 2023. 9. 21. 09:48
반응형

 

람다 함수는 쉽게 말해 익명함수 또는 축약함수라고 할 수 있다. 즉 이름이 없는 함수이며 return문 없이 결과를 반환하는 아주 단순한 구조로 되어 있는 함수이다.

람다 함수는 이름을 정의하지않고 주로 일회용으로 사용한다. 

 

형식

lambda 인자 : 표현식       # return 존재 X

 

 

예시

def add(num1, num2):        #  일반 함수식의 표현
    result = num1 + num2
    return result
print(add(10,20))

add =lambda num1, num2 : num1 + num2  # lambda 함수식의 표현
print(add(10,20))

'''결과값
30
30
'''

위 코드처럼 람다식은 add 변수에 return문없이 결과를 반환한다. 또한 함수를 한줄로 표현해 lambda식을 이해한다면 코드를 해석하기 빠르다.

 

 

If 문 예시

# 연령대에 따른 category를 반환하는 함수

def get_catagory(age):    # 일반 함수식
    category=''
    if age <5:
        category="Baby"
    elif age <12 :
        category="child"
    else:
        category="Adult"
    
        	# lambda 함수식
category=lambda age : "Baby" if age <5 else "child" if age < 12 else "Adult"
print(category(4))

""" 결과
Baby
"""

lambda 함수식을 해석해보면 먼저 age 인자를 선언해주고 'Baby' 는 그 뒤의 조건 age< 5가 참일때, 그리고 else를 사용해 조건이 거짓일때로 넘어가 다시 다음 조건식을 이어 붙일 수 있다.  

 

 

Parameter가 존재하지않는 lambda

def test():
    return 10
add =lambda :10
print(add())

또한 이런식으로 파라미터가 존재하지않는 람다식표현도 가능하다.

 

 

map(함수 이름, iterable type)

iterable type 에 있는 item을 순차적으로 지정한 함수의 paremeter로 전달한 후 return값을 받는다.

 

def str_list(number):
    return str(number) 
numbers = list(range(1,10))
print(list (map(str_list, numbers) ) )  

""" 결과값
['1', '2', '3', '4', '5', '6', '7', '8', '9']
"""

list 자료형인 'numbers' 의 데이터들이 순차적으로 str_list 함수에 인자로 들어가고 그결과가 list 형태로 출력된다.

 

lambda와 map()의 활용

test3 = lambda number : str(number) if number == 1 else  float(number) if number == 2 else number **2
# 1은 문자열로 2는 실수형 나머지는 제곱해주는 lambda함수이다.
print(list(map (test3,numbers) ) )

위의 코드처럼 lambda 함수와 map을 같이 활용도 가능하다.

 

 

mul = lambda num1, num2 : num1*num2
list1=[1,2,3,4,5]
list2=[6,7,8,9,10]

print(list(map(mul,list1,list2)))

""" 결과값
[6, 14, 24, 36, 50]
"""

위에 처럼 2개의 인자를 활용할때에는 map에 두개의 인자를 넣어주면된다.

그렇게되면 1과6이 곱해지고 2와7이 곱해지고 이런식으로 순차적으로 리스트에 담아 출력하게된다.

728x90
반응형