Python Iterators
Python Iterators
Dark mode
Dark code
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP BOOTSTRAP HOW TO W3.CSS C C++ C# REACT R JQUERY DJANGO
Python Syntax
Python Comments ADVERTISEMENT
Python Variables
Python Data Types
Python Numbers
Python Casting
Python Strings
Python Booleans
Python Iterators
Python Operators
❮ Previous Next ❯
Python Lists
Python Tuples
Python Sets
Python Dictionaries Python Iterators
Python If...Else
Python While Loops An iterator is an object that contains a countable number of values.
Python For Loops
An iterator is an object that can be iterated upon, meaning that you can traverse through all the values.
Python Functions
Python Lambda Technically, in Python, an iterator is an object which implements the iterator protocol, which consist of the methods __iter__()
Python Arrays and __next__() .
Python Classes/Objects
Python Inheritance
Python Iterators
Python Polymorphism
Iterator vs Iterable
Python Scope Lists, tuples, dictionaries, and sets are all iterable objects. They are iterable containers which you can get an iterator from.
Python Modules
Python Dates All these objects have a iter() method which is used to get an iterator:
Python Math
print(next(myit))
print(next(myit))
print(next(myit))
Try it Yourself »
COLOR PICKER
Example
Strings are also iterable objects, containing a sequence of characters:
mystr = "banana"
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Try it Yourself »
Example
Iterate the values of a tuple:
print(x)
Try it Yourself »
Example
Iterate the characters of a string:
mystr = "banana"
for x in mystr:
print(x)
Try it Yourself »
The for loop actually creates an iterator object and executes the next() method for each loop.
ADVERTISEMENT
Create an Iterator
To create an object/class as an iterator you have to implement the methods __iter__() and __next__() to your object.
As you have learned in the Python Classes/Objects chapter, all classes have a function called __init__() , which allows you to do
some initializing when the object is being created.
The __iter__() method acts similar, you can do operations (initializing etc.), but must always return the iterator object itself.
The __next__() method also allows you to do operations, and must return the next item in the sequence.
Example
Create an iterator that returns numbers, starting with 1, and each sequence will increase by one (returning 1,2,3,4,5 etc.):
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
Try it Yourself »
StopIteration
The example above would continue forever if you had enough next() statements, or if it was used in a for loop.
To prevent the iteration from going on forever, we can use the StopIteration statement.
In the __next__() method, we can add a terminating condition to raise an error if the iteration is done a specified number of
times:
Example
Stop after 20 iterations:
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
Try it Yourself »
ADVERTISEMENT
ADVERTISEMENT
FORUM | ABOUT
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we
cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.