728x90
Python을 사용하는 개발자라면 한 번쯤 마추졌을 람다 함수(lambda function)
짧고 간결한 코드 작성을 도와주며, 내장 함수들과 결합할 때 진가를 발휘합니다.
람다 함수란?
람다 함수는 익명 함수(Anonymous Function) 의 일종으로, def
없이도 한 줄로 간단한 함수를 정의할 수 있게 해줍니다.
기본 문법
lambdb arguments: expression
예시:
add = lambdb x, y: x + y
print(add(2, 3))
# 5
이는 일반적인 함수 정의와 동일하게 작동합니다:
def add(x, y):
return x + y
print(add(2, 3))
# 5
단, 람다 함수는 한 줄짜리 표현식만 가능하며, 복잡한 로직에는 적합하지 않습니다.
람다 함수는 어디에 쓰일까?
람다 함수는 주로 다른 함수의 인자로 전달될 때 진가를 발휘합니다.
Python의 다양한 내장 함수들과 함께 사용하여 데이터를 효율적으로 처리할 수 있습니다.
내장 함수 + 람다 함수 실전 예시
1. map()
- 요소를 변형할 때
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared)
# [1, 4, 9, 16]
2. filter()
- 조건에 맞는 값만 추출할 때
words = ['apple', 'bat', 'carrot', 'dog']
short_words = list(filter(lambda w: len(w) <= 3, words))
print(short_words)
# ['bat', 'dog']
3. sorted()
- 사용자 정의 기준으로 정렬할 때
students = [('Tom', 80), ('Jane', 92), ('Mike', 77)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)
# [('Mike', 77), ('Tom', 80), ('Jane', 92)]
4. reduce()
- 누적 연산이 필요할 때
from functools import reduce
nums = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, nums)
print(product)
# 24
5. any()
/ all()
- 조건 만족 여부 판별 시
nums = [2, 4, 6, 8]
print(all(map(lambda x: x % 2 == 0, nums)))
# True
nums2 = [1, 2, 3]
print(any(map(lambda x: x % 2 == 0, nums2)))
# True
언제 람다 함수가 효과적일까?
상황 | 이유 |
---|---|
코드가 단순하고 한 줄로 표현 가능할 때 | lambda가 def보다 더 짧고 간결함 |
일회성으로 함수 정의가 필요한 경우 | 굳이 함수 이름을 만들 필요 없음 |
map , filter , sorted 등 고차 함수와 함께 사용 할 때 |
함수 인자를 간단하게 전달 가능 |
콜백 함수가 필요한 라이브러리 함수에서 | 간단한 조건, 계산 처리 시 유용 |
언제 lambda
대신 def
를 써야 할까?
람다 함수는 간단한 표현식만 처리 가능합니다. 다음과 같은 경우에는 def로 함수 정의를 명확하게 해주는것이 좋습니다.
- 여러 줄의 로직이 필요한 경우
- 디버깅이나 로깅이 필요한 경우
- 주석이 필요한 복잡한 함수
- 재사용할 함수 정의가 필요한 경우
람다 함수 패턴 요약표
목적 | 함수 | 예시 |
---|---|---|
값 변형 | map() |
map(lambda x: x+1, nums) |
조건 필터링 | filter() |
filter(lambda x: x > 10, nums) |
사용자 정렬 | sorted() |
sorted(data, key=lambda x: x\[1\]) |
누적 연산 | reduce() |
reduce(lambda x, y: x + y, nums) |
조건 검사 | any() / all() |
all(map(lambda x: 조건, 리스트)) |
마무리
람다 함수는 Python에서 코드를 짧고 깔끔하게 유지하는데 유용한 도구입니다.
특히 내장 함수들과 조합하면 데이터 처리 로직을 파리미터화된 방식과 복잡로직 최소화로 구성할 수 있습니다.
감사합니다.
728x90
반응형
'Computer Science' 카테고리의 다른 글
정렬 알고리즘 (버블, 선택, 삽입) (0) | 2025.04.15 |
---|---|
시간 복잡도와 Big-O (0) | 2025.04.15 |
클라우드 IaaS, PaaS, SaaS 비교 (0) | 2024.03.04 |
ad-hoc이란? (adhoc) (1) | 2023.11.01 |
순회 (Traversal) 란? (0) | 2023.09.20 |