반응형
람다 함수는 쉽게 말해 익명함수 또는 축약함수라고 할 수 있다. 즉 이름이 없는 함수이며 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
반응형
'Python > 함수와 모듈' 카테고리의 다른 글
python 내장함수 abs(), all(), any(), dir(), divmod(), enumerate(), pow() (2) | 2023.09.26 |
---|---|
Python 함수의 이름인수, 가변 인수 처리 (2) | 2023.09.20 |
Python 함수 선언,호출 (2) | 2023.09.20 |