파이썬 itertools (5)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 개발자 (중급 이상): 반복자 및 함수형 프로그래밍 기술을 활용한 코드 최적화에 관심 있는 개발자
- 난이도: 중급 (반복자 패턴, 고급 함수 사용법 포함)
핵심 요약
- itertools 모듈은
count()
,cycle()
,repeat()
등 반복자 생성 함수를 제공하여 반복 작업을 효율화 - accumulate()
,
chain(),
product()` 등 데이터 처리 및 조합**을 위한 핵심 함수 포함 - pairwise()는
iterable
에서 연속된 두 요소의 튜플을 생성하는 유용한 함수 (예:('A', 'B')
,('B', 'C')
)
섹션별 세부 요약
1. 반복자 생성 함수
count(start, step)
: 지정된 시작값과 간격으로 무한히 숫자를 생성 (예:count(1, 2)
→ 1, 3, 5...)cycle(iterable)
: 주어진iterable
을 무한히 반복 (예:cycle(['A', 'B'])
→ 'A', 'B', 'A', 'B'...)repeat(object, times)
: 특정 객체를 지정된 횟수만큼 반복 (예:repeat('X', 3)
→ 'X', 'X', 'X')
2. 데이터 처리 및 조합 함수
accumulate(iterable, func)
:func
를 적용한 누적 결과를 생성 (예:accumulate([1,2,3], lambda x,y: x+y)
→ [1, 3, 6])chain(*iterables)
: 여러iterable
을 하나의 시퀀스로 연결 (예:chain([1,2], [3,4])
→ [1,2,3,4])product(*iterables)
: 카르테시안 곱을 생성 (예:product([1,2], ['a','b'])
→ (1,'a'), (1,'b'), (2,'a'), (2,'b'))
3. 필터링 및 그룹핑 함수
filterfalse(predicate, iterable)
:predicate
조건을 불만족하는 요소만 필터링groupby(iterable, key)
:key
기준으로iterable
을 그룹화 (예:groupby(['apple', 'banana', 'cherry'], key=lambda x: x[0])
)islice(iterable, start, stop, step)
:iterable
의 특정 범위를 슬라이싱 (예:islice(range(10), 2, 8, 2)
→ 2,4,6)
4. `pairwise()` 함수 예제
pairwise(iterable)
은iterable
의 연속된 두 요소를 튜플로 생성 (예:pairwise('ABCD')
→ ('A','B'), ('B','C'), ('C','D'))StopIteration
예외 발생 시 종료 (예:next(v)
마지막 호출 시)
결론
- itertools 모듈은 반복 작업, 데이터 조합, 필터링 등에서 고성능 코드 작성에 유리
pairwise()
와 같은 함수는 데이터 처리의 간결성을 높이는 데 효과적 (예:pairwise(['A', 'B', 'C'])
→ ('A','B'), ('B','C'))- 실무 적용 시
itertools
를 사용하여 반복자 기반 알고리즘을 구현할 수 있음