반복자(iterator): 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조를 순회하는 객체
무한 이터레이터
이터레이터 | 인자 | 결과 | 예 |
count() | [start [, step]] | start, start+step, start+2*step, … | count(10) --> 10 11 12 13 14 ... |
cycle() | p | p0, p1, … plast, p0, p1, … | cycle('ABCD') --> A B C D A B C D ... |
repeat() | elem[,n] | elem, elem, elem, … 끝없이 또는 최대 n 번 | repeat(10, 3) --> 10 10 10 |
가장 짧은 입력 시퀀스에서 종료되는 이터레이터
이터레이터 | 인자 | 결과 | 예 |
accumulate() | p [,func] | p0, p0+p1, p0+p1+p2, … | accumulate([1,2,3,4,5]) --> 1 3 6 10 15 |
chain() | p, q, ... | p0, p1, … plast, q0, q1, … | chain('ABC', 'DEF') --> A B C D E F |
조합형 이터레이터
이터레이터 | 인자 | 결과 | |
중복 순열 | product() | p, q, … [repeat=1] | 데카르트 곱(cartesian product), 중첩된 for 루프와 동등합니다 |
순열 | permutations() | p[, r] | r-길이 튜플들, 모든 가능한 순서, 반복되는 요소 없음 |
조합 | combinations() | p, r | r-길이 튜플들, 정렬된 순서, 반복되는 요소 없음 |
중복 조합 | combinations_with_replacement() | p, r | r-길이 튜플들, 정렬된 순서, 반복되는 요소 있음 |
예 | 결과 |
product('ABCD', repeat=2) | AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD |
permutations('ABCD', 2) | AB AC AD BA BC BD CA CB CD DA DB DC |
combinations('ABCD', 2) | AB AC AD BC BD CD |
combinations_with_replacement('ABCD', 2) | AA AB AC AD BB BC BD CC CD DD |
참조: itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.12.2 문서