람다 함수란 무엇인가?
람다 함수(lambda function)는 이름이 없는 간단한 함수입니다.
일회성으로 사용하거나, map, filter 등과 함께 사용되며 코드의 간결함을 높여줍니다.
기본 문법
lambda 매개변수: 표현식
예제: 두 수의 합 구하기
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
해석:
lambda x, y: x + y
는x + y
를 반환하는 함수를 정의합니다.add(3, 5)
는 lambda 함수를 호출하여 3과 5를 더합니다.
일반 함수처럼 사용할 수도 있지만, 보통은 한 줄짜리 간단한 연산에 쓰는 것이 적합합니다.
람다와 일반 함수 비교
# 일반 함수
def square(x):
return x ** 2
# 람다 함수
square_lambda = lambda x: x ** 2
두 방식 모두 같은 기능을 하지만, 람다는 짧고 간결한 함수 표현이 가능합니다.
복잡한 로직에는 일반 함수, 짧고 반복적인 계산엔 람다가 어울립니다.
map과 filter 함수와의 조합
1. map() 함수 - 리스트의 모든 요소에 함수 적용
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, nums))
print(squared) # [1, 4, 9, 16]
해석:
map(함수, 반복가능한 객체)
형태입니다.- 각 요소를
lambda x: x**2
함수에 적용하여 새 리스트를 만듭니다.
map()
은 리스트 컴프리헨션처럼 반복적인 변환 작업에 유용하게 사용됩니다.
2. filter() 함수 - 조건에 맞는 요소만 걸러냄
nums = [1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [2, 4]
해석:
filter()
는 조건이 True인 값만 추출합니다.lambda x: x % 2 == 0
은 짝수인지 검사합니다.
filter()
는 조건 필터링에 특화된 함수이며, 리스트 컴프리헨션의 if
절과 비슷한 역할을 합니다.
3. map과 filter의 차이점 정리
- map: 값을 변형해서 새 리스트 생성
- filter: 조건에 맞는 값을 선택해서 새 리스트 생성
reduce와 실무 활용 예제
1. reduce() 함수 - 누적 계산
from functools import reduce
nums = [1, 2, 3, 4]
total = reduce(lambda x, y: x + y, nums)
print(total) # 출력: 10
해석:
reduce()
는 누적 계산을 수행합니다.- 첫 번째 요소부터 시작하여 두 번째와 연산 → 결과와 세 번째 → 반복
lambda x, y: x + y
는 누적합을 계산하는 함수입니다.
reduce()
는 리스트의 합계, 곱, 최댓값 계산 등 반복 누적에 사용됩니다.
2. map + filter + lambda 조합
nums = [1, 2, 3, 4, 5, 6]
squared_evens = list(map(lambda x: x**2, filter(lambda x: x % 2 == 0, nums)))
print(squared_evens) # [4, 16, 36]
해석:
filter()
로 짝수만 추출한 뒤,map()
으로 각 숫자를 제곱
이와 같이 여러 함수형 도구를 결합하면 복잡한 작업도 한 줄로 처리할 수 있습니다.
3. 실무 예제: 문자열 리스트에서 숫자만 추출하고 합산
from functools import reduce
data = ["100", "20", "30원", "50", "오류"]
numbers = list(filter(lambda x: x.isdigit(), data))
total = reduce(lambda x, y: int(x) + int(y), numbers)
print(total) # 출력: 170
해석:
filter()
로 숫자만 걸러냅니다.reduce()
로 문자열 숫자를 정수로 바꿔 누적 덧셈을 합니다.
실무에서는 데이터 정제, 변환, 집계 작업에 이 조합이 매우 유용합니다. 파이썬의 lambda
, map
, filter
, reduce
는 코드의 양을 줄이고 복잡한 반복문을 깔끔하게 정리해주는 함수형 프로그래밍 도구입니다. 처음에는 낯설 수 있지만, 자주 쓰는 패턴부터 연습하면 점점 더 유용하게 느껴질 것입니다. 리스트 컴프리헨션과 함께 쓰면 파이썬 코드의 생산성과 가독성이 크게 향상됩니다.