Python lambda
완벽 가이드: 익명 함수로 코드 간결하게 만들기
Python에서 lambda
는 익명 함수를 생성하기 위한 키워드로, 이름 없는 간단한 함수를 한 줄로 작성할 수 있게 도와줍니다. 복잡한 함수 선언 없이 간단한 작업을 처리할 때 매우 유용하지만, lambda
를 처음 접하면 그 문법과 용도가 낯설 수 있습니다.
이번 글에서는 lambda
함수의 개념과 작성법, 그리고 실제 코드에서 어떻게 활용할 수 있는지 다양한 예제를 통해 알아보겠습니다.
lambda
함수란?
lambda
는 한 줄로 간단히 정의할 수 있는 익명 함수를 생성하는 Python 키워드입니다. 일반 함수와는 달리 def
키워드로 이름을 정의하지 않고도 간단한 작업을 처리할 수 있습니다.
기본 문법
lambda arguments: expression
- arguments: 함수의 인자
- expression: 반환할 값이나 계산식 (한 줄로 작성)
1. lambda
로 간단한 함수 생성하기
lambda
를 사용하면 간단한 함수를 한 줄로 정의할 수 있습니다. 아래는 두 숫자의 합을 구하는 함수를 일반 함수와 lambda
로 각각 작성한 예제입니다.
# 일반 함수
def add(a, b):
return a + b
# lambda 함수
add_lambda = lambda a, b: a + b
# 실행 예시
print(add(5, 3)) # 8
print(add_lambda(5, 3)) # 8
결과
8
8
설명
add
함수는 일반적으로 정의된 함수입니다.add_lambda
는 동일한 작업을 수행하지만,lambda
를 사용해 한 줄로 작성되었습니다.- 간단한 작업의 경우
lambda
를 사용하면 코드를 더 간결하게 작성할 수 있습니다.
2. lambda
와 map
을 활용한 리스트 처리
리스트의 각 요소에 함수를 적용하려면 lambda
와 map
을 함께 사용할 수 있습니다. 아래는 리스트의 각 요소를 제곱하는 예제입니다.
numbers = [1, 2, 3, 4, 5]
# lambda와 map 사용
squared = map(lambda x: x ** 2, numbers)
# 결과 출력
print(list(squared))
결과
[1, 4, 9, 16, 25]
설명
map
함수는 첫 번째 인자로 전달된 함수를 리스트의 각 요소에 적용합니다.lambda x: x ** 2
는 각 요소를 제곱하는 익명 함수입니다.- 이를 통해 복잡한 코드 없이 간단히 리스트의 요소를 변환할 수 있습니다.
3. lambda
와 filter
로 조건부 리스트 생성
리스트에서 특정 조건에 맞는 요소만 추출하려면 lambda
와 filter
를 사용할 수 있습니다. 아래는 짝수만 추출하는 예제입니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
# lambda와 filter 사용
even_numbers = filter(lambda x: x % 2 == 0, numbers)
# 결과 출력
print(list(even_numbers))
결과
[2, 4, 6, 8]
설명
filter
함수는 조건을 만족하는 요소만 반환합니다.lambda x: x % 2 == 0
은 요소가 짝수인지 확인하는 익명 함수입니다.- 이를 통해 리스트에서 필요한 데이터만 간단히 추출할 수 있습니다.
4. lambda
와 sorted
로 정렬 기준 지정하기
리스트나 딕셔너리를 정렬할 때, lambda
를 사용해 정렬 기준을 간단히 지정할 수 있습니다. 아래는 이름과 나이가 포함된 튜플 리스트를 나이에 따라 정렬하는 예제입니다.
people = [("Alice", 30), ("Bob", 25), ("Charlie", 35)]
# lambda를 사용해 나이에 따라 정렬
sorted_people = sorted(people, key=lambda person: person[1])
# 결과 출력
print(sorted_people)
결과
[('Bob', 25), ('Alice', 30), ('Charlie', 35)]
설명
sorted
함수는key
매개변수를 통해 정렬 기준을 지정합니다.lambda person: person[1]
은 각 튜플의 두 번째 값(나이)을 기준으로 정렬합니다.- 이를 통해 복잡한 기준이 필요하지 않은 경우 간단히 정렬 기준을 정의할 수 있습니다.
5. lambda
와 reduce
로 값 누적 계산하기
functools.reduce
와 lambda
를 함께 사용하면 리스트의 값을 누적 계산할 수 있습니다. 아래는 리스트의 요소를 모두 곱하는 예제입니다.
from functools import reduce
numbers = [1, 2, 3, 4]
# lambda와 reduce 사용
product = reduce(lambda x, y: x * y, numbers)
# 결과 출력
print(product)
결과
24
설명
reduce
함수는 리스트의 요소를 누적하여 계산합니다.lambda x, y: x * y
는 이전 값과 현재 값을 곱하는 익명 함수입니다.- 이를 통해 리스트의 모든 요소를 한 번에 처리할 수 있습니다.
6. lambda
와 함께 사용하는 주요 함수 정리
Python에서는 lambda
와 함께 사용하면 유용한 함수들이 많습니다. 아래는 그중 몇 가지를 정리한 표입니다.
함수 | 역할 | 예제 코드 |
---|---|---|
map |
리스트의 각 요소에 함수 적용 | map(lambda x: x+1, [1, 2, 3]) |
filter |
조건을 만족하는 요소만 반환 | filter(lambda x: x > 2, [1, 2, 3]) |
sorted |
정렬 기준 지정 | sorted(data, key=lambda x: x[1]) |
reduce |
누적 계산 | reduce(lambda x, y: x*y, [1, 2, 3]) |
7. lambda
사용 시 주의점
- 코드 가독성:
lambda
는 간단한 작업에 적합하지만, 너무 복잡한 계산식이 들어가면 가독성이 떨어질 수 있습니다. 복잡한 로직은 일반 함수를 사용하는 것이 더 좋습니다. - 디버깅 어려움:
lambda
함수는 이름이 없기 때문에 디버깅이 어려울 수 있습니다. 디버깅이 필요하다면 이름 있는 함수를 사용하는 것이 좋습니다.
요약: lambda
를 활용해 코드 간결화하기
Python의 lambda
는 간단한 함수 선언을 대체하고, 다양한 작업을 한 줄로 처리할 수 있는 강력한 도구입니다. 특히 map
, filter
, sorted
, reduce
와 함께 사용하면 불필요한 코드 줄을 줄이고 간결한 코드를 작성할 수 있습니다.
lambda
는 다음과 같은 상황에서 유용합니다:
- 간단한 계산: 한 줄로 작성할 수 있는 작업
- 일회성 함수: 함수 이름이 필요 없는 경우
- 함수형 프로그래밍:
map
,filter
,reduce
와 같은 함수와 함께 사용
이제 lambda
를 사용해 코드를 더 간결하고 효율적으로 만들어보세요!
'개발 > Python 스터디' 카테고리의 다른 글
[Python] `Counter` 클래스 완벽 가이드: 데이터 카운팅부터 분석까지 (1) | 2024.11.20 |
---|---|
[Python] `ChainMap`으로 중첩 딕셔너리 깔끔하게 다루기: 딕셔너리 합치기의 종결자 (0) | 2024.11.19 |
[Python] 리스트 효율적으로 나누기: `chunks` 함수 만들기 가이드 (0) | 2024.11.18 |
[Python] `defaultdict`로 편리한 딕셔너리 생성: 기본값으로 딕셔너리 쉽게 관리하기 (0) | 2024.11.12 |
[Python] `zip`과 `zip_longest`로 두 리스트 병합하기: 짝 맞추기 대작전 (0) | 2024.11.11 |