반응형
Lambda 함수 (익명 함수)란?
lambda 함수는 이름 없이 사용하는 작은 익명 함수입니다. 주로 한 줄짜리 간단한 함수를 만들 때 사용되며, def 키워드를 사용하는 일반 함수보다 짧고 간결한 코드 작성이 가능합니다.
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는 익명 함수라 디버깅이 어려움)
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
GitHub에서 커밋에 "Verified" 배지가 표시되는 이유 (0) | 2025.03.10 |
---|---|
[코드 비교] sort 관련 코드 (2) | 2025.03.08 |
두 코드의 차이점 분석 (0) | 2025.03.08 |
[1, 2] vs [1 2] 차이, 파이썬 리스트와 NumPy 배열 (0) | 2025.03.05 |
실습 문제 풀이 (1) | 2025.03.04 |