파이썬에서의 반복자(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()` 함수

  • 기능: startstep 파라미터를 통해 정수, 실수, 복소수, 불리언 등 다양한 타입의 수열 생성
  • 예시:

```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 모듈은 대규모 데이터 처리 시 메모리 효율성을 높이는 데 유리한 도구임