반응형

파이썬에서는 **익명 함수(lambda 함수)**를 사용하여 간결한 코드 작성을 할 수 있습니다. 또한, map(), filter(), reduce() 함수를 활용하면 데이터를 효과적으로 처리할 수 있습니다.
이러한 기능은 데이터 변환, 필터링 및 누적 연산 등에 자주 활용됩니다.
🔹 1. lambda 함수란?
lambda 함수는 한 줄로 작성하는 익명 함수입니다. def 키워드를 사용하지 않고, 간단한 연산을 수행하는 경우 유용합니다.
✅ 예제 1: lambda 기본 사용
add = lambda x, y: x + y
print(add(3, 5))
출력 예시:
8
📌 설명:
- lambda x, y: x + y는 두 개의 인자를 받아 더한 값을 반환합니다.
- add(3, 5)를 호출하면 8이 출력됩니다.
🔹 2. map() 함수 - 리스트 변환
map() 함수는 리스트의 각 요소를 변환하는 함수입니다.
✅ 예제 2: 리스트의 각 요소 제곱
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
print(squared)
출력 예시:
[1, 4, 9, 16]
📌 설명:
- lambda x: x**2를 사용하여 리스트의 각 요소를 제곱합니다.
- map()을 사용하면 반복문 없이 리스트를 변환할 수 있습니다.
🔹 3. filter() 함수 - 조건에 맞는 값 선택
filter() 함수는 특정 조건을 만족하는 요소만 걸러낼 때 사용됩니다.
✅ 예제 3: 리스트에서 짝수만 필터링
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
출력 예시:
[2, 4, 6]
📌 설명:
- lambda x: x % 2 == 0은 짝수만 선택하는 조건입니다.
- filter()를 사용하면 리스트에서 특정 조건을 만족하는 값만 추출할 수 있습니다.
🔹 4. reduce() 함수 - 누적 연산
reduce() 함수는 리스트의 요소를 하나씩 누적하여 연산을 수행합니다. functools 모듈에서 제공됩니다.
✅ 예제 4: 리스트 요소의 합 계산
from functools import reduce
numbers = [1, 2, 3, 4, 5]
sum_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_numbers)
출력 예시:
15
📌 설명:
- reduce(lambda x, y: x + y, numbers)는 리스트의 요소를 하나씩 더해 나갑니다.
- 1 + 2 + 3 + 4 + 5 = 15가 됩니다.
🔹 5. map(), filter(), reduce() 함께 활용하기
이 함수들을 조합하여 데이터 변환과 필터링을 동시에 수행할 수 있습니다.
✅ 예제 5: 짝수를 제곱한 후 합산하기
numbers = [1, 2, 3, 4, 5, 6]
# 1. 짝수만 필터링
filtered = filter(lambda x: x % 2 == 0, numbers)
# 2. 제곱 변환
squared = map(lambda x: x**2, filtered)
# 3. 합산
result = reduce(lambda x, y: x + y, squared)
print(result)
출력 예시:
56
📌 설명:
- filter()를 사용하여 짝수를 선택합니다: [2, 4, 6]
- map()을 사용하여 각 요소를 제곱합니다: [4, 16, 36]
- reduce()를 사용하여 합을 구합니다: 4 + 16 + 36 = 56
🔹 6. 마무리
이번 문서에서는 lambda 함수, map(), filter(), reduce()의 활용법을 학습했습니다.
✅ 핵심 요약
- lambda 함수: 익명 함수로 간결한 코드 작성 가능
- map(): 리스트의 각 요소를 변환하는 함수
- filter(): 리스트에서 특정 조건을 만족하는 요소만 선택
- reduce(): 리스트의 요소를 누적하여 연산 수행
- 이 함수들을 조합하면 복잡한 데이터 변환을 간결하게 처리할 수 있음
반응형
'IT > Python Basic' 카테고리의 다른 글
| [Python] 초급 퀴즈16 - 파일 입출력 (open, with, read/write) (0) | 2025.02.19 |
|---|---|
| [Python] 초급 퀴즈15 - 딕셔너리 메서드, 키/값 접근, 집합 연산 (0) | 2025.02.19 |
| [Python] 초급 개념19 - collections 모듈 활용 (0) | 2025.02.19 |
| [Python] 초급 개념18 - enumerate와 zip 활용 (0) | 2025.02.19 |
| [Python] 초급 개념16 - random 모듈 활용 (0) | 2025.02.19 |
| [Python] 초급 개념15 - 날짜와 시간 (datetime, time 모듈) (0) | 2025.02.19 |
| [Python] 초급 개념14 - 모듈과 패키지 (import, from, as) (0) | 2025.02.18 |
| [Python] 초급 개념13 - 클래스와 객체 (OOP 기본 개념) (0) | 2025.02.18 |
댓글