본문 바로가기
[파이썬]/함수

[파이썬] 람다 함수

by sung min_Kim 2023. 11. 9.
람다 함수, lambda

익명 함수


· 기본 형태

 

lamda 변수1, 변수2, ...: 결과값


람다 함수는 이름이 없는 한 줄짜리 함수이다.
변수는 함수의 파라미터를 나타내며, 결과값은 함수의 리턴값을 나타낸다.


· 동작 원리

 

res = lambda x: x*2
res(2) # 4 출력


 이 코드는 변수 x 를 함수의 파라미터로 사용하여 곱하기 2 한 값을 결과값으로서 반환하는 람다 함수를 생성한다. 
 위의 람다 함수를 일반 함수로 나타내자면 아래와 같다. 

def multi(x):
  a = x*2
  return a
  
res = multi(2)
print(res) # 4 출력


 람다 함수와 달리 함수 이름이 붙고, 값을 직접 리턴한 모습을 볼 수 있다.
 람다 함수는 주로 map(), filter(), reduce() 등의 함수와 함께 사용되기 한다.

  • map(함수, 반복가능객체)
numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x**2, numbers)
print(list(squared)) # [1, 4, 9, 16, 25] 출력


 map 함수는 반복가능갹체의 각 요소들에 함수를 적용한 결과를 반환한다.
 numbers라는 리스트의 각 요소를 제곱하는 람다 함수를 map() 함수에 적용하여, 각 요소가 제곱된 새로운 리스트를 생성하고 출력한다.

  • filter(함수, 반복가능객체)
numbers = [1, 2, 3, 4, 5]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # [2, 4] 출력

 
filter 함수는 반복가능객체의 각 요소들에 함수를 적용했을 때 참인 요소만 반환한다.
 numbers라는 리스트의 각 요소 중 짝수인 요소만 선택하는 람다 함수를 filter() 함수에 적용하여, 짝수만을 포함한 새로운 리스트를 생성하고 출력한다.

  • reduce(함수, 반복가능객체)
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 120 출력


 reduce 함수는 반복가능객체의 각 요소들을 누적적으로 함수에 적용한다.
 첫 번째와 두 번째 요소를 함수에 적용한 다음, 그 결과를 다시 세 번째 요소와 함께 함수에 적용하는 과정을 반복한다.
 이 과정을 마지막요소까지 반복한 후 리스트의 모든 요소를 하나의 값으로 축약하여 결과를 반환한다.



람다 함수는 이름도 없고, 한줄로 표현하기 때문에 매우 간편히 사용할 수 있다.

또한, 다른 함수의 파라미터로서 람다 함수를 사용하기도 하였다.

이처럼 편리하지만, 이름이 없어서 만든 람다 함수를 다시 사용하기가 어렵다는 단점도 존재한다.

그리고, 간단한 만큼 람다 함수를 여러 번 중첩하여 사용할 경우에는 이해하기 어려울 수도 있겠다.

일회성으로 적절하게 사용하도록 하자.

'[파이썬] > 함수' 카테고리의 다른 글

[파이썬][함수] 클로저 함수  (2) 2023.11.15
[파이썬][함수] 데코레이터 함수  (2) 2023.11.15
[파이썬] 함수  (0) 2023.11.08