파이썬에서의 Iterator (10)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • Python 개발자 (중급 이상)
  • itertools 모듈 사용자 (조합, 순열, 직교 제품 생성 필요)
  • 데이터 분석 및 알고리즘 구현에 관심 있는 개발자

핵심 요약

  • product(): *iterablesrepeat 파라미터를 사용해 직교 제품(Cartesian Product) 생성
  • 예: product('ABC', repeat=2)('A', 'A'), ('A', 'B'), ...
  • permutations(): iterabler 파라미터로 순열 생성
  • 예: permutations('ABC', r=2)('A', 'B'), ('A', 'C'), ...
  • 주의사항: repeat=0 또는 빈 iterable 사용 시 StopIteration 발생

섹션별 세부 요약

1. `product()` 함수의 기본 사용법

  • *iterables 파라미터는 필수로, 반복 가능한 객체를 입력
  • repeat은 선택적 정수로, 생성된 튜플의 길이를 결정 (기본값: 1)
  • 예: product('ABC')('A',), ('B',), ('C',)
  • repeat=2 시, ('A', 'A'), ('A', 'B'), ... 등 9개의 조합 생성

2. `product()`의 예외 처리

  • repeat=0 시, 빈 튜플 ()만 생성 (예: product('ABC', repeat=0)() )
  • repeat을 생략 시, *iterables의 길이가 사용됨
  • *iterables가 비어 있거나 None일 경우, StopIteration 발생

3. `permutations()` 함수의 기본 사용법

  • iterable은 필수로, 순열을 생성할 대상이 되는 반복 가능한 객체
  • r은 선택적 정수로, 생성된 튜플의 길이를 결정 (기본값: len(iterable) )
  • 예: permutations('ABC', r=3)('A', 'B', 'C'), ('A', 'C', 'B'), ... 등 6개의 순열 생성

4. `permutations()`의 예외 처리

  • r=0 시, 빈 튜플 ()만 생성 (예: permutations('ABC', r=0)() )
  • iterable이 비어 있거나 None일 경우, StopIteration 발생
  • r > len(iterable)일 경우, StopIteration 발생

5. 실무 활용 예시

  • product(): 조합 생성 (예: RGB 색상 조합, 제품 테스트 케이스 생성)
  • permutations(): 순열 생성 (예: 비밀번호 생성, 순서 기반 알고리즘)
  • 반복자 사용 시 주의: StopIteration 예외 처리를 반드시 포함해야 함

결론

  • product()직교 제품 생성에 적합, permutations()순열 생성에 적합
  • repeatr 파라미터는 반드시 사용해야 하며, 0 이상의 값만 허용
  • StopIteration 예외는 try-except로 처리하거나, itertools.islice()로 제한된 결과만 반환하는 것이 안전
  • 예시 코드: for x in product('ABC', repeat=2): print(x) 또는 for x in permutations('ABC', r=2): print(x)