파이썬에서의 이터레이터와 itertools 모듈 활용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 개발자 (중급 이상): 이터레이터와 itertools 모듈의 고급 활용법을 배우고 싶은 분
- 데이터 처리 및 분석에 관심 있는 개발자: 반복 가능한 데이터 구조를 효율적으로 처리하는 방법을 학습하고자 하는 분
- 난이도: 중간 (이터레이터 개념 이해 필요)
핵심 요약
compress()
:selectors
가True
인 요소만 필터링하여 반환 (예:compress(data='ABCDE', selectors=[1,0,1,1,0])
→A
,C
,D
)filterfalse()
:predicate
조건이True
인 요소만 포함 (예:filterfalse(lambda x: x < 5, [1,4,6,3,8])
→6
,8
)takewhile()
:predicate
이True
인 동안 요소를 반환 (예:takewhile(lambda x: x < 5, [1,4,6,3,8])
→1
,4
)dropwhile()
:predicate
이False
가 될 때까지 요소를 건너뛰고 이후 요소를 반환 (예:dropwhile(lambda x: x < 5, [1,4,6,3,8])
→6
,3
,8
)
섹션별 세부 요약
1. `compress()` 함수
- 기능:
selectors
가True
인 경우에만data
의 요소를 포함 - 매개변수:
data
(필수, iterable),selectors
(필수, iterable) - 예시:
- compress(data='ABCDE', selectors=[1,0,1,1,0])
→ A
, C
, D
- selectors
길이가 data
보다 짧을 경우 StopIteration
발생
2. `filterfalse()` 함수
- 기능:
predicate
조건이True
인 요소만 포함 - 주의사항:
predicate=
또는iterable=
과 같은 키워드 인수 사용 금지 - 예시:
- filterfalse(lambda x: x < 5, [1,4,6,3,8])
→ 6
, 8
- predicate
이 None
이면 True
로 간주
3. `takewhile()` 함수
- 기능:
predicate
이True
인 동안 요소를 반환 후 중단 - 매개변수:
predicate
(필수, callable),iterable
(필수, iterable) - 예시:
- takewhile(lambda x: x < 5, [1,4,6,3,8])
→ 1
, 4
- predicate
이 False
가 되는 순간 이후 요소는 무시
4. `dropwhile()` 함수
- 기능:
predicate
이True
인 동안 요소를 건너뛰고,False
가 되는 순간부터 반환 - 주의사항:
predicate
이 항상True
일 경우 모든 요소가 건너뛰어짐 - 예시:
- dropwhile(lambda x: x < 5, [1,4,6,3,8])
→ 6
, 3
, 8
- predicate
이 False
인 요소부터 iterable
의 나머지가 반환됨
결론
- 실무 팁:
compress()
는 조건에 따라 데이터를 필터링할 때 유용,filterfalse()
는predicate
조건이True
인 요소만 처리할 때 사용 - 주의사항:
selectors
와data
의 길이 불일치 시StopIteration
발생 가능,takewhile()
과dropwhile()
은predicate
의 동작에 따라 결과가 달라짐 - 예제 활용:
itertools
의compress()
,filterfalse()
,takewhile()
,dropwhile()
은 데이터 처리 시 반복 구조를 간결하게 표현할 수 있음