Home >Backend Development >Python Tutorial >How Do I Create and Use Iterators in Python?
Creating an Iterator in Python
Building an iterator in Python requires implementing the iterator protocol, which specifies two essential methods: __iter__() and __next__(). These methods define how objects can initialize and iterate through a sequence of values.
Understanding the Iterator Protocol
In __iter__(), the iterator object is returned, which is typically called implicitly at the start of loops. __next__() is the primary method that returns the next value in the sequence. For Python 2 users, this method is known as next(). When all values are exhausted, __next__() raises a StopIteration exception, which looping constructs capture to terminate iteration.
An Example: The Counter Iterator
Let's create a simple Counter iterator that generates values within a specified range:
class Counter: def __init__(self, low, high): self.current = low - 1 self.high = high def __iter__(self): return self def __next__(self): # Python 2: def next(self) self.current += 1 if self.current < self.high: return self.current raise StopIteration # Usage: for c in Counter(3, 9): print(c)
This will produce the following output:
3 4 5 6 7 8
Using Generators for Iterators
Generators offer an alternative mechanism for creating iterators. Generator functions yield values one at a time, effectively implementing the iterator protocol.
def counter(low, high): current = low while current < high: yield current current += 1 # Usage: for c in counter(3, 9): print(c)
The above code produces the same output as the Counter class.
Additional Resources
For a comprehensive understanding of iterators, refer to resources like David Mertz's article "Iterators and Simple Generators."
The above is the detailed content of How Do I Create and Use Iterators in Python?. For more information, please follow other related articles on the PHP Chinese website!