Mastering Python (73 Blogs) Become a Certified Professional
AWS Global Infrastructure

Data Science

Topics Covered
  • Business Analytics with R (32 Blogs)
  • Data Science (39 Blogs)
  • Mastering Python (68 Blogs)
  • Decision Tree Modeling Using R (1 Blogs)
SEE MORE

Python Iterators: What is Iterator in Python and how to use it?

Last updated on Mar 27,2020 666 Views
56 / 61 Blog from Python Fundamentals

Python programming language has scaled each and every aspect of innovation including Machine Learning, Data Science, Artificial Intelligence, etc. One of the many reasons for this feat is concepts like Python Iterators, concepts like these are the building blocks of Python’s triumph as a programming language. In this article, we will go through the following concepts to understand Python Iterators:

Iterators vs Iterable

An object in Python, that can be used as an Iterable object is called as Iterable. This basically means the sequence in the object can be iterated upon. Most of the Python collections like a list, dictionary, tuple, sets, and even range can be treated as an Iterable.

What Are Python Iterators?

A Python Iterator is a container containing a countable number of values. Values in a container can be traversed using Iterators – particularly lists.

Apart from traversal, Iterators also gives access to data elements in a container but does not itself perform iteration i.e., not without some significant liberty taken with that concept or with trivial use of the terminology. An Iterator is almost similar to a database cursor in behavior. Here is a simple example of the Iterator in Python.  

my_obj = {"Edureka", "Python", "iterator"}
iter_obj = iter(my_obj)
print(next(iter_obj))

Output: Edureka

Iterator is any type of Python that can be used with a ‘for in loop’. Any object that is to be used as an Iterator must implement the following methods.

iterators in python - edureka

1.  __iter__()

It is called on the initialization of an Iterator. It should return an object that has a next or __next__  method.

2.  __next__() 

The Iterator’s next method returns the next value for the Iterable. 

When an Iterator is used with a ‘for in’ loop, next() is implicitly called by for loop on the Iterator object. This method should use a StopIteration to signal the end of the iteration. Together these two methods are called the Iterator Protocol. Let us try to understand how a for loop acts as an Iterator in Python with an example.

for i in object:
     print(i)

Let us understand how for loop works as an Iterator.

# create an iterator object from that iterable
iter_obj = iter(iterable)

# infinite loop
while True:
    try:
        # get the next item
        element = next(iter_obj)
        # do something with element
    except StopIteration:
        # if StopIteration is raised, break from loop
        break

Now that we know, how the for loop works as an Iterator. Let us understand how we can implement custom Iterators in Python.

Custom Iterators

Now let us take a look at how we can implement custom Iterators in Python. To understand this, we will use an example. In this example, we will implement the __iter__() and __next__() methods.

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))

Output: 1

        2

        3

Now that we know how we can implement custom Iterators, let us take a look at infinite Iterators in Python.

Infinite Iterators

It is not always mandatory that the item in an Iterator object has to exhaust. There can be infinite Iterators (which never ends). Here is a basic example to demonstrate infinite iterators.

The built-in function iter() can be called with two arguments where the first argument must be an object (function) that can be called and second is the sentinel. The Iterator calls this function until the returned value becomes equal to the sentinel.

Let us take an example to understand this

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))

Output: 1
        2
        3
        4
        5

In the above example, the execution will go on as long as we keep on adding the print statement. To stop the infinite Iterators, we need to use the stopIteration statement.

StopIteration

To stop an Iteration from going on forever, we use the StopIteration statement. Let us understand this with a few examples.

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    if self.a <= 5:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in myiter:
  print(x)

Output: 1
        2
        3
        4
        5

Now as soon as the if statement condition is false, the execution will move to the else block and the Iteration will stop. Now let’s take a look at a few other examples of Iterators in Python.

Python Iterator Examples

Here are a few more examples of Iterators in Python.

my_obj = ["Edureka", "python", "iterator"]
iter_obj = iter(my_obj)
print(next(iter_obj))

Output: Edureka

In this example, we use the tuple as the iterable object.

my_obj = ("Edureka", "python", "iterator")
iter_obj = iter(my_obj)
print(next(iter_obj))

Output: Edureka

We can even use the string as an iterable object in python.

my_obj = "Edureka"
iter_obj = iter(my_obj)
print(next(iter_obj))

Output: E

This brings us to the end of this article where we have learned how we use the Python Iterators with examples. I hope you are clear with all that has been shared with you in this tutorial. 

If you found this article on “Python Iterators” relevant, check out Edureka’s Python Programming Certification Course a trusted online learning company with a network of more than 250,000 satisfied learners spread across the globe.

We are here to help you with every step on your journey and come up with a curriculum that is designed for students and professionals who want to be a Python developer. The course is designed to give you a head start into Python programming and train you for both core and advanced Python concepts along with various Python frameworks like Django.

If you come across any questions, feel free to ask all your questions in the comments section of “Python Iterators”. Our team will be glad to answer.

Comments
0 Comments

Join the discussion

Browse Categories

webinar REGISTER FOR FREE WEBINAR
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP

Subscribe to our Newsletter, and get personalized recommendations.