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(): predicateTrue인 동안 요소를 반환 (예: takewhile(lambda a: a < 5, [1, 4, 6, 3, 8]) → 1, 4)
  • dropwhile(): predicateFalse가 될 때까지 요소를 건너뛰고 이후 요소 반환 (예: dropwhile(lambda a: a < 5, [1, 4, 6, 3, 8]) → 6, 3, 8)

섹션별 세부 요약

1. `compress()` 함수

  • dataselectors 두 인자 필요
  • selectors의 값이 True인 인덱스의 data 요소만 반환
  • selectors의 길이가 data보다 길면 StopIteration 발생
  • 예: compress(data='ABCDE', selectors=[1, 0, 1, 1, 0]) → 'A', 'C', 'D'

2. `filterfalse()` 함수

  • predicate 조건이 True인 요소만 반환
  • predicatelambda 함수 또는 None 가능
  • None 사용 시 iterableFalse 값만 필터링
  • 예: filterfalse(lambda a: a < 5, [1, 4, 6, 3, 8]) → 6, 8

3. `takewhile()` 함수

  • predicateTrue인 동안 요소를 반환
  • predicateFalse가 되면 처리 중단
  • 예: takewhile(lambda a: a < 5, [1, 4, 6, 3, 8]) → 1, 4

4. `dropwhile()` 함수

  • predicateTrue인 동안 요소를 건너뛰고, False가 되면 이후 요소 반환
  • 예: dropwhile(lambda a: a < 5, [1, 4, 6, 3, 8]) → 6, 3, 8

결론

  • itertools 모듈의 compress, filterfalse, takewhile, dropwhile반복자 기반의 효율적인 데이터 필터링에 유리
  • selectorspredicate 인자의 타입과 로직을 정확히 파악해야 오류 방지
  • 추가 기능이 필요할 경우 more-itertools 패키지 설치 (pip install more-itertools) 추천