Python의 itertools 모듈 활용법 (3)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 중급 이상의 Python 개발자
- 반복자(iterator)를 활용한 데이터 처리 필요자
- itertools 모듈의 고급 기능을 익히고자 하는 개발자
핵심 요약
compress()
:selectors
의 값이True
인 요소만 필터링 (예:compress(data='ABCDE', selectors=[1, 0, 1, 1, 0])
→ 'A', 'C', 'D')filterfalse()
:predicate
조건이True
인 요소만 반환 (예:filterfalse(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 6, 8)takewhile()
:predicate
이True
인 동안 요소를 반환 (예:takewhile(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 1, 4)dropwhile()
:predicate
이False
가 될 때까지 요소를 건너뛰고 이후 요소 반환 (예:dropwhile(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 6, 3, 8)
섹션별 세부 요약
1. `compress()` 함수
data
와selectors
두 인자 필요selectors
의 값이True
인 인덱스의data
요소만 반환selectors
의 길이가data
보다 길면StopIteration
발생- 예:
compress(data='ABCDE', selectors=[1, 0, 1, 1, 0])
→ 'A', 'C', 'D'
2. `filterfalse()` 함수
predicate
조건이True
인 요소만 반환predicate
은lambda
함수 또는None
가능None
사용 시iterable
의False
값만 필터링- 예:
filterfalse(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 6, 8
3. `takewhile()` 함수
predicate
이True
인 동안 요소를 반환predicate
이False
가 되면 처리 중단- 예:
takewhile(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 1, 4
4. `dropwhile()` 함수
predicate
이True
인 동안 요소를 건너뛰고,False
가 되면 이후 요소 반환- 예:
dropwhile(lambda a: a < 5, [1, 4, 6, 3, 8])
→ 6, 3, 8
결론
itertools
모듈의compress
,filterfalse
,takewhile
,dropwhile
은 반복자 기반의 효율적인 데이터 필터링에 유리selectors
와predicate
인자의 타입과 로직을 정확히 파악해야 오류 방지- 추가 기능이 필요할 경우
more-itertools
패키지 설치 (pip install more-itertools
) 추천