Python의 반복자(itertools) 활용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Python 개발자, 데이터 처리 및 반복자 기능 활용이 필요한 중급/고급 개발자
핵심 요약
itertools.accumulate()
는func
매개변수로 누적 연산을 수행하며,initial
값을 설정할 수 있음itertools.batched()
는n
개의 요소를 배치한 반복자를 생성하고,strict=True
로 불완전한 배치를 방지itertools.chain()
및chain.from_iterable()
는 여러 반복자를 연결하여 순차적으로 요소를 반환itertools.compress()
는selectors
를 기반으로 데이터를 필터링하여 특정 조건에 맞는 요소만 추출
섹션별 세부 요약
1. `accumulate()` 함수
iterable
과func
매개변수를 통해 누적 연산 수행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()
의 동작을 예측하기 위해 주의 필요