메소드를 하나의 표현식으로 나타낸 것
함수형 프로그래밍이 각광받고 있는 요즘 여러 클래스를 나눌 필요없이 하나의 함수안에 람다표현식으로 간결하게 나타낼 수 있다
불필요한 Loop문을 줄일 수 있다
표현식만으로 return값을 되돌려준다
def check_password(password):
if len(password) < 8:
return 'SHORT_PASSWORD'
if not any(c.isupper() for c in password):
return 'NO_CAPITAL_LETTER_PASSWORD'
return True
# Lambda형 변환
lambdas = [
lambda x : 'SHORT_PASSWORD' if len(x) < 8 else None,
lambda x : 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in x) else None
]
def check_password_using_lambda(password):
for f in lambdas:
if f(password) is not None:
return f(password)
return True
print( check_password_using_lambda('123') )
# SHORT_PASSWORD
print( check_password_using_lambda('12356789f') )
# NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789F') )
# True
전달받은 자료형의 element 중 하나라도 True일 경우 True를 돌려준다.
(만약 empty 값을 argument로 넘겨주었다면 False를 돌려준다.)
list(map(lambda x: x , list )
각 리스트 요소들을 x의 상태값으로 바꾸어 새로운 객체를 리턴한다'
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key = lambda x: x*3, reverse=True)
return str(int("".join(numbers)))
filter 조건의 boolean 값이 True 참인 요소만 반환한다
numberList = [1, 2, 3, 4, 5]
result = list(filter(lambda x : int == type(x), numberList))
# [1, 2, 3, 4, 5]
functools에 있는 모듈로 앞에서부터 차례대로 계산을 해준다
from functools import reduce
list = [ 1, 2, 3, 4, 5]
def addList(list):
return reduce(lambda x, y : x + y, list)
# 15