람다 함수
람다 함수는 일시적으로 사용하는 익명 함수입니다. 간결하면서 짧게 쓸 수 있기에 잘 사용한다면 좋은 코드를 쓸 수 있는 함수입니다. 단순한 일회용 함수이며 변수에 람다식을 대입하지 않는 이상 호출이 불가능하며 일시적으로 쓰입니다.
기본식
lambda (인자):(표현식)
인자는 변수로 사용되는 인수들의 이름입니다. 위와 같은 단순 람다식은 호출이 불가능합니다.
ld_func=lambda x,y : x + y
다음과 같은 표현은 lambda 식을 나중에 호출하기 위해 사용합니다. 람다식을 변수에 직접 대입한 식입니다. x, y가 인자가 되며 x+y는 표현식이 됩니다.
람다는 혼자로도 자주 사용되지만 다른 함수와 혼합하여 사용할 때 빛을 발합니다.
lambda 함수 응용
if~else 응용
lambda 안에 if~else문을 사용할 수 있습니다. lambda를 이용한 if~else문은 다음과 같습니다.
lambda (인자): (표현식1) if (조건식) else (표현식2)
조금 복잡해 보일 수도 있습니다. 때문에 너무 길고 복잡한 식이라면 lambda 식을 사용하는 것보다 def문을 통한 함수 작성이 더 좋을 수 도 있습니다. 다음 예는 if~else를 응용한 lambda 사용 예입니다.
map 응용
map 함수는 반복 가능한 자료형을 특정 함수로 일괄 처리하는 함수입니다. if~else 예제에서 살짝 등장했는데 보다시피 같은 함수로 이터러블 자료를 일괄 처리하기 위해 사용합니다. 반환 값은 map 객체 그 자체라 list로 변환이 필요합니다.
map(function(),iterable) 형태이며 함수에 lambda 식을 넣어 응용할 수 있습니다.
list_a=[1,2,3,4,5,6,7]
list_a=list(map(lambda x:x+2,list_a))
filter 응용
filter는 map함수와 응용이 비슷합니다. filter(function,iterable)형태입니다. 함수에 따라 포함될지 안될지 여부를 정합니다.
list_a=[2,5,7,8,11,13,14]
list_a=list(filter(lambda x:x%2==0,list_a))
reduce 응용
reduce 함수는 순환 가능한 값으로 누적 집계를 하기 위한 집계 함수입니다.
reduce(func,list)로 첫 번째 인자는 함수, 두 번째는 순회 가능한 값이 들어갑니다. reduce 함수는 응용중 유일하게 내장 함수가 아니기 때문에 functools 모듈을 import 해야 합니다.
from functools import reduce
list_a=[1,5,7,8]
reduce(lambda x,y:x*y,list_a)
lambda 마무리
자체만으로도 활용도가 높지만 다른 함수와 사용할수록 그 활용도가 더 높아진다. 하지만 if~else문이나 복잡한 구문을 넣는다면 가독성을 해치기 때문에 좋지 않습니다. 오히려 def를 이용한 일반 함수 작성이 더 좋을 수도 있습니다. 줄이 길어지게 되면 가독성이 떨어지므로 이런 경우는 일반 함수로 작성하는 것을 추천합니다.
'Programming > Python' 카테고리의 다른 글
파이썬 format 메서드 다양한 포매팅을 돕는 메서드 (0) | 2021.08.22 |
---|---|
파이썬 % 포매팅에 대하여 (0) | 2021.08.14 |
파이썬 리스트와 리스트 활용하기 (0) | 2021.08.05 |
파이썬 AES 암호화 파일 예제 (2) | 2021.07.23 |
파이썬 Crypto 모듈 설치 (0) | 2021.05.14 |
댓글