Advanced·7 min·advanced · iteration
Iterators
Iterators
The iterator protocol is dead simple:
__iter__()returns an iterator (oftenself)__next__()returns the next item, or raisesStopIteration
Every for-loop, comprehension, and sum()/min()/max() builds on this.
itertools is your friend
chain,islice,cycle,count,takewhile,dropwhilegroupby,combinations,permutations,product
Generators vs hand-rolled iterators
Generators (with yield) are usually clearer for one-off iteration. Build a class only when you need state or methods beyond __next__.
Try it
- Write a hand-rolled iterator for the Fibonacci sequence.
- Use
itertools.productto enumerate every(rank, suit)of a card deck.