Python Iterators: Difference between revisions
Line 27: | Line 27: | ||
There's no <code>has_next()</code> method that tests the availability of a next item without consuming it. Unavailability of a next item is tested by checking the <code>StopIteration</code> exception. | There's no <code>has_next()</code> method that tests the availability of a next item without consuming it. Unavailability of a next item is tested by checking the <code>StopIteration</code> exception. | ||
If you are OK to always consume the next item, the end of the iterator can be tested with: | <font color=darkkhaki>If you are OK to always consume the next item, the end of the iterator can be tested with: | ||
<syntaxhighlight lang='py'> | |||
... | |||
next(i, None) is not None | |||
</syntaxhighlight> | |||
</font> |
Revision as of 05:09, 7 July 2022
External
Internal
TODO
TO PROCESS PyOOP "The Iterator Pattern" + "Iterators" + "The iterator protocol"
Overview
An iterator instance represents a stream of data.
The iterator instances are created from iterable objects with the built-in function iter()
:
l = ['a', 'b', 'c']
i = iter(l)
Once created, repeated invocations of the iterator's __next__()
method, or by passing it to the built-in function next()
, return successive items in the stream:
assert next(i) == 'a'
assert next(i) == 'b'
assert next(i) == 'c'
When no more data are available a StopIteration
exception is raised instead. At this point, the iterator object is exhausted and any further calls to its __next__()
method just raise StopIteration
again.
There's no has_next()
method that tests the availability of a next item without consuming it. Unavailability of a next item is tested by checking the StopIteration
exception.
If you are OK to always consume the next item, the end of the iterator can be tested with:
...
next(i, None) is not None