In Python 2, an iterator can be traversed by using a method called next
on the iterator itself:
g = (i for i in range(0, 3))
g.next() # Yields 0
g.next() # Yields 1
g.next() # Yields 2
In Python 3 the .next
method has been renamed to .__next__
, acknowledging its “magic” role, so calling .next
will raise an AttributeError
. The correct way to access this functionality in both Python 2 and Python 3 is to call the next
function with the iterator as an argument.
g = (i for i in range(0, 3))
next(g) # Yields 0
next(g) # Yields 1
next(g) # Yields 2
This code is portable across versions from 2.6 through to current releases.