×

Iterators in Python

Introduction

In Python, an iterator is defined as an object that enables traversing through all the values of a collection. It contains the countable number of values.

The iterator is utilized to iterate on the iterable objects such as lists, tuples, dicts, and sets. It contains two methods which is __iter__(iterable) method and __next__() method.

The iter() method is used for initializing the iterator object and the next() method is used for iteration.

Iterable

The iterable is refer to an object like lists, tuples, dictionaries, and sets. These all are iterable objects and creates an iterator when crossed to the iter() method. The iterable returns an iterator.

Example of Python inbuilt iterator:

iterable_value = 'Tutorial'

iterable_obj = iter(iterable_value)

while True:

    try:

        # Iterate by calling next

        item = next(iterable_obj)

        print(item)

    except StopIteration:

        # exception will happen after iteration is completed

        break

Output:

T

U

T

O

R

I

A

L

Explanation: In the above example, we have defined the use of Python inbuit iterator. We have created an iterator with iter() method.

Example of Iterator with a tuple:

mytuple = ("mango", "raspberry", "lemon")

myit = iter(mytuple)

print(next(myit))

print(next(myit))

print(next(myit))

Output:

mango

raspberry

lemon

Explanation: In the above example, we have defined the iterator by using a tuple. Here, we have used the iter() method with a tuple and printed the result.

Example of Iterator with a String:

mystr = "pineapple"

myit = iter(mystr)

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

Output:

p

i

n

e

a

p

p

l

e

Explanation: In the above example, we have defined the iterator by using a string of character. Here, we have used the iter() method with a string and printed the result.

Creating an Iterator

As we all know that the init() function is carried by all classes. When the object is created it allows initialization of the object.

The iter() method works the same as an iterator, we can do initialization, but an iterator object is returned itself always.

Also, the next() method enables us to do initialization, and the next item must be returned. 

Let's take an example here the custom iterator can return an even number 1 each time the iteration is done.

Example 1:

class Evenit:

    def __init__(self, max=0):

        self.max = max

    def __iter__(self):

        self.n = 0

        return self

    def __next__(self):

        if self.n <= self.max:

            if self.n % 2 ==0:

                result=self.n

                self.n += 1

                return result

            else:

                self.n += 1

                return 1

        else:

            raise StopIteration

# create an object

numbers = Evenit(10)

for i in numbers:

print(i)

Output:

0

1

2

1

4

1

6

1

8

1

10

Example 2:

class Test:

    # Constructor

    def __init__(self, limit):

        self.limit = limit

    # iterator object will creates

    def __iter__(self):

        self.x = 10

        return self

    def __next__(self):

        # Storing the current value

        x = self.x

        # Stopping iteration

        if x > self.limit:

            raise StopIteration

        self.x = x + 1;

        return x

# from 10 to 15 numbers will printing

for i in Test(15):

    print(i)

# Prints none

for i in Test(5):

    print(i)

Output:

10

11

12

13

14

15

Explanation: In the above examples 1 and 2, we have created an iterator. Here, we have done intiliazation with next() method and returned next item. The custom iterator returned an even number 1 each time the iteration is done.

StopIteration

The stopiteration statement is used for stopping the iteration to go on endlessly. It is supposed an Exception and it can be handled easily by picking that exception like other exceptions in Python.

The method next() or __next__() raises the exception for stopping the iterations or it shows that there are no more elements are left for iteration.

Example:

class MyNumbers:

  def __iter__(self):

   self.a = 1

    return self

  def __next__(self):

    if self.a <= 18:

     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

6

7

8

9

10

11

12

13

14

15

16

17

18

Explanation: In the above example, we have defined the use of stopiteration method. Here we have used the method next() or __next__() that raises the exception for stopping the iterations.

Containers

The containers can be defined as the objects that hold the values of data. We can check that the value is located in the container. 

Containers are iterables i.e, lists, dictionaries, sets, strings, and tuples.

Example:

if 1 in [1,6,2]:

    print('This is a List')

if 7 not in {4,1,8}:

    print('This is a Tuple')

if 'apple' in 'pineapple':

    print('This is a String')

Output:

This is a List

This is a Tuple

This is a String

Explanation: In the above examples, we have checked that the value is located in the container or not by using the conditional statements.

Generators

Generators are defined as the way or method of generating iterators. 

In simple words, a generator is referred to the function that returns an iterator that we can iterate upon.

In Python, it is very easy to create a generator and it uses the yield statement instead of the return statement.

Example:

def series_generator(low, high):

    while low <= high:

       yield low

       low += 1

n_list = []

for num in series_generator(4,16):

    n_list.append(num)

print(n_list)

Output:

[4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

Explanation: In the above example, generators is defined. As we can see that it returned an iterator on which we can iterate upon. Here we have used the yield statement instead of return statement.

Conclusion

In the above article, you have learned about the iterators in Python and also we have seen some more methods like generators and containers. And we learned how to implement them.


Related Topics

Python Tutorial

Python tutorial is a widely used programming language which helps beginners and professionals to understand the basics of Python programming easily. Python is a high-level, easy, interpreted, general-purpose, and dynamic programming...

19 minutes read.

Python filter() function

Python filter() function The filter() function constructs an iterator from those elements of iterable for which the parameter ‘function’ returns a Boolean value true. Syntax filter(function, iterable) Parameter function: This parameter represents a function to be run for each item in the...

1 minute read.

Python IDE names

Python is one of the most renowned programming languages. It has different execution conditions and a great many compilers to execute the python programs, e.g., PyCharm, PyDev, Jupyter Notebook, Visual...

6 minutes read.

Python MySQL Database Connection

In this article, you will be able to understand how to connect to a MySQL database through Python. We generally can use many methods or modules to connect to the database...

6 minutes read.

Python EOL (End Of Line)

Introduction An EOL (End Of Line) is defined as a syntax error that indicates that the Python interpreter reached at the end of the line when it tried to scan a...

3 minutes read.

iobase Python

All I/O flow classes derive from this conceptual base class. Derived classes will have to execute several of the class's abstract data types. The loop method is supported by all members of...

4 minutes read.

How to Install Pandas in Python?

Pandas is a library created in Python for handling and analyzing data. Pandas provides a variety of procedures and data structures for manipulating time series and numerical data.  Pandas is...

3 minutes read.

Is Python Object Oriented Programming language

In this tutorial, we will see whether python also belongs to an object-oriented programming language like several others. We will also see the advantages of using OOPs. Further, we will...

4 minutes read.

Cursor in Python

The cursor is an item that aids in query execution and records retrieval from databases. The cursor is crucial to the execution of the query. In-depth information on the execution...

7 minutes read.

Anonymous/Lambda Function in Python

Lambda keyword is used to declare an Anonymous function, i.e. a function that does not have any name. It is also called Anonymous functions. In python, normal functions are defined...

3 minutes read.

Python List count() method

Python List count() method The list.count() method returns the number of times x appears in the list. Syntax list.count(x) Parameter x: This parameter represents the value to search for and can contain any iterable (list, set, tuple, etc.) Return This method returns the...

1 minute read.

Raise Exception in Python

Most of the programmers/developers create large programs to solve complex tasks in Python. The code can be of 1000 lines and even more based on the need of the problem....

5 minutes read.

An Introduction to Subprocess in Python with Examples

Subprocess in Python By starting new processes, the Python function subprocess is utilized to run extra programs and applications. It makes it possible to run brand-new apps straight from a Programming...

6 minutes read.

Python Data Visualization

In this tutorial, we will understand what data visualization means in python. Further, we will see different methods of visualizing data in python. Data visualization In a non-technical language, it is a...

4 minutes read.

Python len() function

Python len() function The len() function in Python  returns the number of items in an object. Syntax len(s) Parameter s: This parameter represents a sequence (such as a string, bytes, tuple, list, or range) or...

1 minute read.

Python Random Module

The tutorial for the Python random module demonstrates how to produce pseudo-random integers in Python. Random Number Generator (RNG) The RNG (random number generator) generates a series of values with no discernible...

8 minutes read.

Arithmetic Expressions in Python

What is Python Expression? Expressions are collections of operands and operators. Python expressions are translated by the Python interpreter into some value or outcome. In Python, an expression is made up...

13 minutes read.

Palindrome In Python

What is Palindrome? A Palindrome can be defined as the number or a string that resides unchanged when it is reversed. Example: 14341 Output: Yes, this is a Palindrome number Example: RACECAR Output: Yes, this...

2 minutes read.

How to find square root in python

How to find Square Root of a number In Python Python makes a lot of tasks easier by using different functions, modules, and libraires. There is an inbuilt function in Python...

6 minutes read.

How to Print Pattern in Python

How to Print Pattern in Python. Pattern programs are really important for beginners and they are always asked in all the technical interviews. Multiple loops approach is used to print the different...

6 minutes read.