1. map, filter, reduce 의 동작 원리
- map / filter : 파이썬 3에서는 이터레이터(iterator) 를 반환합니다.
- 즉, 결과를 한 번에 리스트로 만들어 메모리에 올리는 게 아니라 요청할 때마다 값을 하나씩 생성(lazy evaluation) 합니다.
- 그래서 대용량 데이터를 다룰 때 메모리 사용을 크게 줄일 수 있습니다.
nums = range(1, 1000000000) # 10억 개
mapped = map(lambda x: x*2, nums) # 아직 계산 안 함
print(next(mapped)) # 2 (필요할 때 계산)
reduce : 누적해서 하나의 값을 만들어내는 함수. 내부적으로 반복문을 돌리지만, 역시 중간 결과를 리스트에 저장하지 않아서 메모리 부담이 적습니다.
2. 메모리 효율
- list comprehension 같은 구문은 결과 리스트를 전부 메모리에 생성합니다.
- 반면 map/filter 는 필요할 때만 연산 → 메모리 절약
- 예: 1억 개 데이터를 처리해도 map/filter 객체는 작은 이터레이터 하나만 메모리에 존재합니다.
3. 처리 속도
- map, filter, reduce 는 내부적으로 C로 구현된 루프를 사용하기 때문에, 순수 파이썬 for 문보다 빠른 경우가 많습니다.
- 하지만 짧은 데이터 처리에서는 속도 차이가 크지 않고, 대용량 데이터일 때 이점이 더 두드러집니다.
4. 코드 간결성
- map, filter, reduce → 함수형 스타일로 코드를 짧고 명확하게 작성 가능
- 다만, 가독성이 떨어질 수 있어서 파이썬에서는 list comprehension 과 병행해서 쓰는 경우가 많습니다.
정리하면:
- 대용량 데이터 처리에서 메모리 사용을 줄이고 효율적으로 동작
- map, filter 는 lazy evaluation(필요할 때만 연산) 덕분에 전체를 한 번에 메모리에 올리지 않습니다.
- reduce 는 중간 결과를 따로 쌓지 않고 바로 누적하기 때문에 메모리 효율적입니다.
- 또한, C 구현 기반이라 순수 파이썬 반복문보다 속도도 더 빠른 경우가 많습니다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| 파이썬에서의 메소드 오버로딩 (multipledispatch 활용) (0) | 2025.09.14 |
|---|---|
| 파이썬 언더스코어(_)의 의미와 활용 (0) | 2025.09.14 |
| 파이썬에서 내부 자원과 외부 리소스의 차이 (0) | 2025.09.13 |
| 파이썬 컨텍스트 매니저로 실행 시간 측정하기 (0) | 2025.09.13 |
| 파이썬 컨텍스트 매니저(Context Manager) 완전 정리 (0) | 2025.09.13 |