itertool 모듈의 주요 함수 및 활용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: Python 개발자, 특히 반복자(iterator)를 활용한 데이터 처리에 관심 있는 중급 이상 개발자
- 난이도: 중급(반복자 패턴, 제너레이터 이해 필요)
핵심 요약
- itertools.product():
*iterables
의 카르테시안 곱을 생성하며,repeat
파라미터로 반복 횟수 조절 (예:product([1,2], repeat=2)
→(1,1), (1,2), (2,1), (2,2)
) - 주요 함수:
accumulate()
,chain()
,groupby()
,combinations()
등 15개 이상의 반복자 처리 함수 제공 - 확장 모듈:
more-itertools
설치(pip install more-itertools
)로 추가 기능 활용 가능
섹션별 세부 요약
1. 기본 반복자 함수
count()
: 무한 수열 생성 (예:count(start=1, step=2)
→ 1, 3, 5, ...)cycle()
: 입력 시퀀스 무한 반복 (예:cycle([1,2,3])
→ 1,2,3,1,2,3...)repeat()
: 특정 값/객체를repeat
횟수만큼 반복 (예:repeat('a', 3)
→ 'a', 'a', 'a')
2. 데이터 집합 처리 함수
accumulate()
: 누적 연산 수행 (예:accumulate([1,2,3], func=operator.add)
→ 1, 3, 6)chain()
: 여러 반복자 연결 (예:chain([1,2], [3,4])
→ 1,2,3,4)chain.from_iterable()
: 중첩된 반복자 펼침 (예:chain.from_iterable([[1,2], [3,4]])
→ 1,2,3,4)
3. 필터링 및 그룹화 함수
compress()
: 조건에 따라 요소 필터링 (예:compress('abc', [1,0,1])
→ 'a', 'c')groupby()
: 키 기준으로 그룹화 (예:groupby(['apple', 'banana', 'cherry'], key=lambda x: x[0])
)islice()
: 슬라이싱 기능 (예:islice(range(10), 2, 6)
→ 2,3,4,5)
4. 조합 및 분할 함수
combinations()
: 중복 없이 조합 생성 (예:combinations([1,2,3], 2)
→ (1,2), (1,3), (2,3))batched()
: 반복자 분할 (예:batched([1,2,3,4], 2)
→ [1,2], [3,4])pairwise()
: 인접한 요소 쌍 생성 (예:pairwise([1,2,3])
→ (1,2), (2,3))
결론
product()
사용 시*iterables
와repeat
파라미터를 명시적으로 전달해야 하며,repeat=0
은 빈 튜플 생성more-itertools
설치로batched()
등 30개 이상의 추가 함수 활용 가능- 반복자 기반 데이터 처리는 메모리 효율성과 병렬 처리에 유리한 핵심 패턴임