Python Itertools Tutorial – Part I

Articles From: QuantInsti
Website: QuantInsti

By:

QuantInsti

Python itertools is quite simply, one of the best and elegant solutions to implement an iterator in Python. But what are Iterators?

An iterator is an object that can be iterated upon and which will return data, one element at a time. It allows us to traverse through all elements of a collection, regardless of its specific implementation.

While iterators are a great way to list the contents of a list, sometimes you wonder if we can just hide all the complexity into one single line of code. For example, we don’t want to worry about the number of elements when we are comparing two different dataframes. This is where the Python itertools module shines through.

Let’s understand what are the prerequisites for using itertools.

Iterators and itertools in Python

Technically, in Python, an iterator is an object which implements the iterator protocol, which in turn consists of the methods __next__() and __iter__().

  • __iter__() method which returns the iterator object itself and is used while using the for and in keywords.
  • __next__() method returns the next value. It also returns StopIteration error once all the objects have been tracked.

Iterators are mostly used in for loops. You can read about them in detail in the Python Handbook.

You can import itertools in your Python code with the following commands

import itertools
import operator

We have also imported the “operator” module as we will be using algebraic operators along with itertools.

But yes, it is that simple to import the module in Python. Let’s move forward to the first type of itertools.

Infinite iterators

As the name suggests, infinite iterators are created to go through the elements of a data object infinitely, unless we pass a break statement.

Let’s see an example of it.

The count() iterator

Here, we will append the count function with “itertool” to give us the function “itertool.count” iterator and pass the parameters start and step to begin counting.

In this code, 42 is the starting point and 8 is the step. Just so that the function doesn’t continue endlessly, we use the break statement to stop once it goes beyond 60.

Thus, the code is:

# Count itertool
for i in itertools.count(42,8):
print(i)
if i > 60:
break

The output is as follows:

42
50
58
66

I will just add here that since the “if” statement is invoked after the “print” statement, 66 is printed and then the iteration stops.

We will now move on to the next type of iterators, which are the opposite of infinite.

In the next installment, the author will discuss Terminating iterators.

Visit https://www.quantinsti.com/ for ready-to-use Python functions as applied in trading and data analysis.

Disclosure: Interactive Brokers

Information posted on IBKR Campus that is provided by third-parties does NOT constitute a recommendation that you should contract for the services of that third party. Third-party participants who contribute to IBKR Campus are independent of Interactive Brokers and Interactive Brokers does not make any representations or warranties concerning the services offered, their past or future performance, or the accuracy of the information provided by the third party. Past performance is no guarantee of future results.

This material is from QuantInsti and is being posted with its permission. The views expressed in this material are solely those of the author and/or QuantInsti and Interactive Brokers is not endorsing or recommending any investment or trading discussed in the material. This material is not and should not be construed as an offer to buy or sell any security. It should not be construed as research or investment advice or a recommendation to buy, sell or hold any security or commodity. This material does not and is not intended to take into account the particular financial conditions, investment objectives or requirements of individual customers. Before acting on this material, you should consider whether it is suitable for your particular circumstances and, as necessary, seek professional advice.