- Python Snacks
- Posts
- Itertools: The One Package to Not Look Over
Itertools: The One Package to Not Look Over
Here's how you can leverage Python's itertools library to be more efficient with your looping

If you’ve ever run into situations where you need to manage complex iterations and don’t want to create a home-cooked solution, itertools may be the answer to your problems.
Often overlooked, this package is a game-changer for data processing, as it’s able to keep your code clean while handling complex iterations efficiently.
I want to discuss what this package is, why use it, and list the 5 of the most common methods with code examples.
Article Contents
What Is itertools?
itertools is a Python module that provides a set of tools for handling iterators in an efficient and elegant manner.
As part of the Python standard library, the package offers:
Fast and memory-efficient tools for manipulating iterators,
Combinatoric functions, such as permutations and combinations,
Chaining and grouping tools,
Advanced mapping and accumulating, which extends functionality beyond mapping and reducing functions.
The 5 Methods You Should Know
chain()
This is used to combine several iterators into a single extended iterator, in order of arguments. For instance:
from itertools import chain
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined = chain(list1, list2)
print(list(combined))
# Output: [1, 2, 3, 'a', 'b', 'c']
Note that if you wanted the output list to be reversed (i.e. [‘a’, ‘b’, ‘c’, 1, 2, 3]), you’ll switch up the parameters of the method to be itertools.chain(list2, list1).
cycle()
This repeats items from the iterator indefinitely. Let’s say we want a scatter plot with different colors:
import matplotlib.pyplot as plt
from itertools import cycle
import random
# Set up a cycle for a list of colors to plot
colors = ['green', 'red', 'blue', 'purple']
color_cycle = cycle(colors)
x_vals = list(range(0, 10))
y_vals = [random.randint(0, 10) for _ in x_vals]
for x, y in zip(x_vals, y_vals):
plt.scatter(x, y, color = next(color_cycle))
This could result in the plot looking like below, with the colors cycling

accumulate()
This method creates an iterator that returns accumulated sums or accumulated results of other binary functions.
from itertools import accumulate
import operator
# Accumulate sums
data = [1, 2, 3, 4]
result = list(accumulate(data, func=operator.add))
print(result)
# Output: [1, 3, 6, 10]
groupby()
This method creates an iterable based upon a specified key function. For instance, if we wanted to group by the first letter:
from itertools import groupby
# Group by first letter
data = ['apple', 'apricot', 'banana', 'pear', 'peach']
for key, group in groupby(data, key=lambda x: x[0]):
print(key, list(group))
# Output: a ['apple', 'apricot'], b ['banana'], p ['pear', 'peach']
Here, our key function is the 0th index of each letter. This is defined by the lambda function: lambda x: x[0]
permutations()
This generates all possible permutations of the elements of the input. For instance, if we wanted to find all possible combinations of AB:
from itertools import permutations
# All permutations of length 2
perms = permutations('AB')
print(list(perms))
# Output: [('A', 'B'), ('B', 'A')]
📧Join the Python Snacks Newsletter!🐍
Want even more Python-related content that’s useful? Here’s 3 reasons why you should subscribe the Python Snacks newsletter:
Get Ahead in Python with bite-sized Python tips and tricks delivered straight to your inbox, like the one above.
Exclusive Subscriber Perks: Receive a curated selection of up to 6 high-impact Python resources, tips, and exclusive insights with each email.
Get Smarter with Python in under 5 minutes. Your next Python breakthrough could just an email away.
You can unsubscribe at any time.
Interested in starting a newsletter or a blog?
Do you have a wealth of knowledge and insights to share with the world? Starting your own newsletter or blog is an excellent way to establish yourself as an authority in your field, connect with a like-minded community, and open up new opportunities.
If TikTok, Twitter, Facebook, or other social media platforms were to get banned, you’d lose all your followers. This is why you should start a newsletter: you own your audience.
This article may contain affiliate links. Affiliate links come at no cost to you and support the costs of this blog. Should you purchase a product/service from an affiliate link, it will come at no additional cost to you.
Reply