파이썬에서의 Iterator (10)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 개발자 (중급 이상)
- itertools 모듈 사용자 (조합, 순열, 직교 제품 생성 필요)
- 데이터 분석 및 알고리즘 구현에 관심 있는 개발자
핵심 요약
product()
:*iterables
와repeat
파라미터를 사용해 직교 제품(Cartesian Product) 생성- 예:
product('ABC', repeat=2)
→('A', 'A')
,('A', 'B')
, ... permutations()
:iterable
과r
파라미터로 순열 생성- 예:
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()
는 순열 생성에 적합repeat
및r
파라미터는 반드시 사용해야 하며, 0 이상의 값만 허용StopIteration
예외는try-except
로 처리하거나,itertools.islice()
로 제한된 결과만 반환하는 것이 안전- 예시 코드:
for x in product('ABC', repeat=2): print(x)
또는for x in permutations('ABC', r=2): print(x)