Python의 반복자(itertools) 활용법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

Python 개발자, 데이터 처리 및 반복자 기능 활용이 필요한 중급/고급 개발자

핵심 요약

  • itertools.accumulate()func 매개변수로 누적 연산을 수행하며, initial 값을 설정할 수 있음
  • itertools.batched()n 개의 요소를 배치한 반복자를 생성하고, strict=True로 불완전한 배치를 방지
  • itertools.chain()chain.from_iterable()는 여러 반복자를 연결하여 순차적으로 요소를 반환
  • itertools.compress()selectors를 기반으로 데이터를 필터링하여 특정 조건에 맞는 요소만 추출

섹션별 세부 요약

1. `accumulate()` 함수

  • iterablefunc 매개변수를 통해 누적 연산 수행
  • initial 값을 설정하면 초기값으로 시작
  • 예시: accumulate([1,2,3], func=add)[1,3,6]
  • func을 생략하면 기본값 None 사용 (값을 그대로 반환)

2. `batched()` 함수

  • n 매개변수로 배치 크기 설정 (최소 1)
  • strict=True로 불완전한 마지막 배치를 에러로 처리
  • 예시: batched('ABCDEFGH', n=3, strict=True)('A','B','C'), ('D','E','F')ValueError 발생

3. `chain()` 및 `chain.from_iterable()`

  • chain()은 여러 iterables을 연결하여 요소를 순차적으로 반환
  • chain.from_iterable()은 단일 iterable을 풀어 연결
  • 예시: chain('ABC', 'DE')A, B, C, D, E 순서로 반환
  • *iterables= 형식의 키워드는 사용 금지

4. `compress()` 함수

  • selectors 리스트를 통해 data에서 True에 해당하는 요소만 추출
  • selectors 길이가 data보다 길면 자동으로 False로 간주
  • 예시: compress('ABCDE', [1,0,1,1,0])A, C, D 반환

결론

  • accumulate()는 누적 연산, batched()는 데이터 그룹핑, chain()은 반복자 연결, compress()는 필터링에 각각 적합
  • strict 매개변수는 batched()에서 데이터 무결성 보장에 유용
  • chain.from_iterable()은 중첩된 리스트를 풀어 처리할 때 효율적
  • selectors의 길이가 data와 다른 경우 compress()의 동작을 예측하기 위해 주의 필요