×

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

Division in Python

In this tutorial, we will understand what mathematical operation division is and how is it performed in Python Programming language. We will also focus on the operators being used in...

3 minutes read.

Python Line Break

Introduction In this tutorial, you will learn line breaks in python.In Python, the new line character is used to indicate the start of a new line and the end of an...

5 minutes read.

Uint8 Python

Python: Python programming language is one of the most used programming languages, as it is used widely in the field of software and data analysis, web development, etc. It is said...

3 minutes read.

Append key Value to Dictionary in Python

The Python dictionary is one of the built-in data types. Elements of dictionaries are key-value pairs. In Python, there are numerous ways to add dictionaries. Let's examine some of the...

9 minutes read.

Import py file in Python

In Python programming language, a module is a single layer of block of Python code that can be loaded and used by importing into other Python block of code. A module...

4 minutes read.

Python exe() function

Python exe() function The exec() function in Python executes the specified Python code and accepts large blocks of code. It supports dynamic execution of Python code where the object must be either a string...

1 minute read.

Python Variables, Constants and Literals

Python is today's most valuable, easy-to-implement and sought-out programming language. Nowadays, developers want to focus on implementing the program rather than spending time with complex programs. So, for this reason,...

17 minutes read.

Python Functionalities of Pillow Module

This instructional exercise is about "Pillow" library, one of the significant libraries of python for picture control. Pillow library of python, is an easy to use and also open source...

14 minutes read.

Write Dictionary to CSV in Python

Python is an Object-Oriented high-level language. Python has an English-like syntax, which is very easy to read and write codes. Python is an interpreted language which means that it uses...

4 minutes read.

Self in Python

 “self" is neither a keyword nor has a special meaning in Python, but it has a place and a job to do in Object-oriented programming. When we create a class...

6 minutes read.

Operator Overloading in Python

In any programming language, + is an arithmetic operator; it adds two numbers to give the sum. Have you ever tried to concatenate two strings? Concatenating two strings is adding...

5 minutes read.

Python String isalpha() method

Python String isalpha() method The string.isalpha () method in Python returns a boolean value true if all characters in the  string are alphabetic else for any other value it returns false. Syntax isalpha()  Parameter NA Return This...

1 minute read.

Yield Statement In Python

The generators are defined by using the yield statement in Python. Generally, it converts a normal Python function into a generator.  The yield statement hauls the function and returns back the...

2 minutes read.

os.stat() method in Python

In Python, the os module provides the capacity to interact with the operating system. The operating system comes under the Python module. In this module, Python provides a specific feature...

3 minutes read.

Python List remove() method

Python List remove() method The list.remove () method in Python removes the item at the specified position in the given list. Syntax list.remove(x) Parameter x: This parameter represents the element you want to remove and accepts any type...

1 minute read.

Python Permutations and Combinations

In mathematics, we all studied what is meant by permutations and combinations. “Permutations” define the way of arranging the elements in sequential order. “Combinations” mean the way of selecting the...

7 minutes read.

Decision Tree in Python

Decision Tree is one of the most essential algorithms in the area of machine learning for classification and regression. But let us first talk about the lifespan of every machine learning...

12 minutes read.

Imread Python

In this walkthrough, we'll go over the specifics of using the imread() method of OpenCV-Python and various methods for loading images. Imread is an Image reading library. One of the most helpful...

7 minutes read.

Working with files in Python

Python is an object-oriented high-level programming language. Python has dynamic semantics and has high-level built-in data structures which support dynamic typing and dynamic binding. Python provides rapid development. It has an...

5 minutes read.

Python Assert

Python Assert Python provides an assert statement which is used to check the logical expression. If the given logical expression is true, then it precedes for the next line; otherwise, it raises an...

2 minutes read.