파이썬에서의 반복자(itertools) 활용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: Python 개발자, 특히 반복자(iterator) 및 제너레이터(generator)를 활용한 데이터 처리에 관심 있는 중급 이상 개발자
- 난이도: 중급 (itertools 모듈과 반복자 개념 이해 필요)
핵심 요약
count()
: 시작값(start)과 단계(step)를 지정하여 무한히 숫자를 생성하는 함수. 예:count(start=0, step=1)
cycle()
: 주어진 반복 가능한 객체(iterable)의 요소를 순환적으로 반복. 예:cycle('ABC')
→ 'A', 'B', 'C', 'A', ...repeat()
: 특정 객체를 무한히 또는 지정된 횟수(times)만큼 반복. 예:repeat('Hello', times=3)
→ 'Hello', 'Hello', 'Hello'
섹션별 세부 요약
1. `count()` 함수
- 기능:
start
와step
파라미터를 통해 정수, 실수, 복소수, 불리언 등 다양한 타입의 수열 생성 - 예시:
```python
from itertools import count
v = count(start=5, step=-3)
print(next(v)) # 5
print(next(v)) # 2
```
- 특징:
- start
기본값은 0, step
기본값은 1
- start
에 복소수나 불리언도 사용 가능
2. `cycle()` 함수
- 기능: 주어진 iterable의 요소를 무한히 순환 반복
- 예시:
```python
from itertools import cycle
v = cycle(['A', 'B', 'C'])
print(next(v)) # A
print(next(v)) # B
```
- 주의사항:
- iterable=
으로 파라미터 명시 금지 (예: cycle(iterable='ABC')
❌)
- 메모리 효율성에 주의 (대규모 데이터 사용 시 무한 루프 가능성)
3. `repeat()` 함수
- 기능: 특정 객체를 무한히 또는 지정된 횟수만큼 반복
- 예시:
```python
from itertools import repeat
v = repeat('Hello', times=3)
print(next(v)) # Hello
print(next(v)) # Hello
```
- 특징:
- times
파라미터가 설정되지 않으면 무한 반복
- StopIteration
예외 처리 필요 (예: next(v)
호출 시 times
초과 시 발생)
결론
- 실무 팁:
- count()
는 수치 계산, cycle()
은 반복 패턴 생성, repeat()
은 고정된 값 반복에 적합
- cycle()
과 repeat()
사용 시 무한 루프를 방지하기 위해 조건문을 반드시 추가해야 함
- itertools
모듈은 대규모 데이터 처리 시 메모리 효율성을 높이는 데 유리한 도구임