십대를 위한 코딩/십대를 위한 파이썬

Lambda 함수 (익명 함수)란?

forSilver 2025. 3. 9. 05:51
반응형

Lambda 함수 (익명 함수)란?

lambda 함수는 이름 없이 사용하는 작은 익명 함수입니다. 주로 한 줄짜리 간단한 함수를 만들 때 사용되며, def 키워드를 사용하는 일반 함수보다 짧고 간결한 코드 작성이 가능합니다.

Lambda 함수 사례


1. 기본 문법

lambda 매개변수: 표현식
  • lambda 키워드를 사용하여 익명 함수를 정의합니다.
  • 매개변수를 지정할 수 있으며, 여러 개도 가능합니다.
  • : 이후의 표현식이 함수의 결과값을 반환합니다.
  • return 문을 사용하지 않아도 자동으로 결과를 반환합니다.

2. lambda 함수 vs 일반 함수

(1) 일반 함수 사용

def add(x, y):
    return x + y

print(add(3, 5))  # 출력: 8

(2) lambda 함수 사용

add_lambda = lambda x, y: x + y
print(add_lambda(3, 5))  # 출력: 8

일반 함수와 비교했을 때, lambda는 한 줄로 함수를 간결하게 표현할 수 있습니다.


3. lambda 함수의 활용 예제

(1) 리스트 정렬 (정렬 기준으로 활용)

data = [(1, 'apple'), (3, 'banana'), (2, 'cherry')]
data.sort(key=lambda x: x[0])  # 첫 번째 요소(숫자)를 기준으로 정렬
print(data)
# 출력: [(1, 'apple'), (2, 'cherry'), (3, 'banana')]
data.sort(key=lambda x: x[1])  # 두 번째 요소(문자열)를 기준으로 정렬
print(data)
# 출력: [(1, 'apple'), (3, 'banana'), (2, 'cherry')]

(2) map() 함수와 함께 사용

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)
# 출력: [1, 4, 9, 16, 25]

✅ map() 함수는 리스트의 각 요소를 변환할 때 사용됩니다.


(3) filter() 함수와 함께 사용

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
# 출력: [2, 4, 6, 8]

✅ filter() 함수는 조건을 만족하는 요소만 필터링할 때 사용됩니다.


(4) reduce() 함수와 함께 사용

reduce() 함수는 리스트의 값을 누적해서 계산할 때 사용됩니다. functools.reduce()를 사용해야 합니다.

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)
# 출력: 120  (1 * 2 * 3 * 4 * 5)

✅ reduce() 함수는 리스트의 값을 하나의 값으로 줄여야 할 때 사용됩니다.


4. lambda 함수를 사용해야 할 때 vs 일반 함수를 써야 할 때

lambda 함수가 유리한 경우

  • 간단한 연산을 할 때 (map, filter, sort 등과 함께 사용)
  • 한 번만 사용할 함수일 때 (굳이 def로 정의할 필요 없음)

lambda 함수가 불리한 경우

  • 여러 줄의 코드가 필요한 복잡한 함수일 때 (def를 사용하는 것이 가독성이 좋음)
  • 디버깅이 필요한 경우 (lambda는 익명 함수라 디버깅이 어려움)