Programing/Python

[Python] 람다(lambda) 표현식 의 개념 및 사용방법

다크미라클 2022. 10. 13. 21:06

사용자 지정함수 def을 정의해서 사용할 정도로 길지 않은 함수를 간편하게 작성할 수 있어서 다른 함수의

인수로 넣을 때 주로 사용하는 것을 람다 표현식이라고 합니다. 

def sum (a,b):
    return a+b
    
sum(10,20)
>>> 30
sum = lambda a,b : a + b

sum(10,20)
>>> 30

둘다 똑같은 결과를 보여주지만, 사용자 지정함수의 경우 2줄이 필요하지만 람다 표현식의 경우 1줄에 결과값을 출력하는 것을 볼수 있다. 즉, 람다 표현식의 경우 매개변수, 연산자, 값 등을 조합한 lambda를 줄여서 반환값을 만드는 방식입니다. 

아래의 사진을 보면 더 정확하게 파악이 가능한다.

 

https://runestone.academy/ns/books/published/fopp/AdvancedFunctions/Anonymousfunctionswithlambdaexpressions.html


1. 람다 표현식 사용

1. map()

map() 함수의 경우 리스트의 요소를 지정된 함수로 처리해주는 함수로 map(int, [1.2, 2.3])와 같이 소수를 하나 하나 접근한 뒤 int로 변환하여 사용하였습니다. lambda를 사용한 map같은 경우 아래와 같이 args에 있는 리스트의 값이 하나씩 들어와서 [6, 12, 18]을 출력하는것을 볼수 있다. 

list(map(lambda x : x * 3, [2,4,6])
>>> [6, 12, 18]

2. reduce()

reduce() 함수는 각 요소를 연산한 뒤 이전 결과들과 누적해서 반환해 주는 함수로 functools 모듈에서 reduce를 불러와서 사용할수 있다. lambda를 사용하면 사용자 지정함수를 사용하지 않고 바로 reduce로 처리가 가능하기 떄문에 직관적이고 간결하게 적을 수 있다.

from functools import reduce
a = [2,4,23,53,345,12,34]
print(reduce(lambda x, y : x + y, a))

3. filter()

map()과 비슷하게 특정조건으로 걸러진 요소들을 지정된 함수로 처리해주는 함수로, map의 경우 모든 값을 처리했다고 하면 filter()의 경우 참과 거짓의 조건에 맞게 걸러진 요소들을 처리한다는 부분이 map과는 다른점이라고 본다.

filter(function, iterator)
function : 필터링을 적용시킬 함수
iterable : 반복 가능한 값
a = [32, 23, 31, 40, 32]
result = filter(lambda x : x % 2==0, a)
print(list(result))
>>> [32, 40, 32]​

 

lambda를 사용하지 않았을 경우 filter는 적용시킬 함수에 사용자 지점함수를
만들어야 했지만 다음과 같이 축약하여 사용할수 있다. 

4. sorted(), sort()

sorted()를 사용할 경우 오름차순, 내림차순은 할수 있으나 어떤 기준으로 오름차순을 하는지 지정하지 않는다. 그러나 

key = lambda x : x[0]와 같이 lambda를 사용할 경우 어떤 기준으로 정렬을 할 것인지 지정이 가능하다. 

school = [("정수", 12), ("민수", 73), ("사랑", 50), ("구누", 32)]
a = sorted(school, key = lambda x : (-x[1], x[0]))
a
>>>[('민수', 73), ('사랑', 50), ('구누', 32), ('정수', 12)]

5.  min(), max()

최소값과 최대값을 구하는 함수인 min()과 max()에서도 lambda의 사용이 가능하다. 

name = ['shim', 'kim', 'sanim']
shortname = min(name, key= lambda x: len(x))
print(shortname)
>>> kim

정보 참고한 블로그 (감사드립니다.)

 

Lambda 표현식.. 으으으😬

lambda 인자 : 리턴 값 의 형태를 지니는 익명(이름이 없는) 함수.함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용한다.이렇게 이름지어서 만드랴, 다시 호출하랴 손이 많

velog.io

 

[python/파이썬] 19. 람다(lambda) 함수/표현식과 고차함수(map, reduce, filter)

이번 차시는 '람다 함수'에 대해 다룹니다. 일회성 함수? 간편 함수? 라고 생각하면 편할 거 같...

blog.naver.com