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개 이상의 추가 함수 활용 가능- 반복자 기반 데이터 처리는 메모리 효율성과 병렬 처리에 유리한 핵심 패턴임