Python Tutorials - Herong's Tutorial Examples - v2.15, by Herong Yang
What Is Iterator Object
This section provides a quick introduction on iterator object, which is an object with a required instance method to return the next item from a collection.
What Is Iterator Object - An iterator object is an object that supports a required instance method, iterator.__next__(), to return the next item from a collection. If there is no more item to return, iterator.__next__() should raise the "StopIteration" error.
By the way, the required method is called object.next() in Python 2.
Once you have an iterator object created, you can call the built-in method next(iterator) to retrieve the next item. next(iterator) will call iterator.__next__() for you. So the following statements are equivalent:
next(iterator) # preferred way to retrieve the next item iterator.__next__() # used in Python 3 iterator.next() # used in Python 2
The main purpose of using an iterator object is to iterate over all items in a collection by calling the next(iterator) method repeatedly in loop statements. However there is no easy way to test the of the collection, so you need to a "try" statement block to catch the "StopIteration" error to end the loop
try:
while True:
item = next(iterator)
...
except StopIteration:
pass
The tutorial example code, iterator_test.py, listed below shows you how to create a class with the required method defined, and call the class constructor to create an iterator object. The code also include two ways to use the iterator object.
# iterator_test.py
#- Copyright 2011 (c) HerongYang.com. All Rights Reserved.
#
# define a class
class top3:
items = ['C', 'Java', 'JavaScript']
def __init__(self):
self.i = 0
# define the required method by the iterator interface for Python 3
def __next__(self):
if self.i < 3:
self.i += 1
return top3.items[self.i-1]
else:
raise StopIteration()
# define the required method by the iterator interface for Python 2
def next(self):
return self.__next__()
# create an iterator object and retrieve its items in a "while" loop
iter = top3()
try:
while True:
item = next(iter)
print(item)
except StopIteration:
print("End of collection reached...")
# create an iterator object and retrieve its items without any loops
iter = top3()
try:
print(next(iter))
print(next(iter))
print(next(iter))
print(next(iter))
print(next(iter))
print(next(iter))
except StopIteration:
print("End of collection reached...")
If you run this sample code, you should get:
herong> python iterator_test.py C Java JavaScript End of collection reached... C Java JavaScript End of collection reached...
Table of Contents
Variables, Operations and Expressions
Function Statement and Function Call
Iterable Objects of Built-in Data Types
What Is Filtered Generator Expression
What Is Double-Generator Expression
List, Set and Dictionary Comprehensions
Packages and Package Directories
"pathlib" - Object-Oriented Filesystem Paths
"pip" - Package Installer for Python
SciPy.org - Python Libraries for Science
pandas - Data Analysis and Manipulation
Anaconda - Python Environment Manager