This content originally appeared on Level Up Coding - Medium and was authored by Harish Siva Subramanian
What is Itertools? Itertools is a collection of functions that work with iterators, allowing you to perform common data transformations and aggregations in a concise and efficient manner. Iterators are objects that produce a sequence of values one at a time, making them ideal for working with large datasets.
Why should I care? The Itertools library is significant in Python for several reasons:
- Memory Efficiency: Iterators use less memory than lists because they only store the current element, making them perfect for working with large datasets.
- Flexibility: Iterators can be used to iterate over a wide range of data structures, including lists, tuples, strings, and even infinite sequences.
- Concise Code: The Itertools library provides a concise way to perform common data transformations, making your code more readable and maintainable.
- Performance: The core of the Itertools library is implemented in C, making it faster than equivalent Python code.
In this article I am going to cover a few itertools functions that helps in efficient coding.
Here are 10 important itertools functions in Python, along with examples:
1. itertools.permutations(iterable, r=None)
The permutations function returns all possible permutations of the elements in the iterable. If r is specified, it returns all permutations of length r.
Example:
import itertools
fruits = ['apple', 'banana', 'cherry']
permutations = list(itertools.permutations(fruits))
print(permutations)
Output:
[('apple', 'banana', 'cherry'),
('apple', 'cherry', 'banana'),
('banana', 'apple', 'cherry'),
('banana', 'cherry', 'apple'),
('cherry', 'apple', 'banana'),
('cherry', 'banana', 'apple')]
2. itertools.combinations(iterable, r)
The combinations function returns all possible combinations of the elements in the iterable, of length r.
Example:
import itertools
numbers = [1, 2, 3, 4]
combinations = list(itertools.combinations(numbers, 2))
print(combinations)
Output:
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
3. itertools.groupby(iterable, key=None)
The groupby function returns an iterator that groups the elements of the iterable by a common attribute (key). If key is specified, it is used to determine the group for each element.
Example:
import itertools
students = [{'name': 'John', 'grade': 'A'}, {'name': 'Jane', 'grade': 'A'}, {'name': 'Bob', 'grade': 'B'}]
grouped_students = itertools.groupby(students, key=lambda x: x['grade'])
for grade, group in grouped_students:
print(f"Grade: {grade}")
for student in group:
print(student)
Output:
Grade: A
{'name': 'John', 'grade': 'A'}
{'name': 'Jane', 'grade': 'A'}
Grade: B
{'name': 'Bob', 'grade': 'B'}
4. itertools.zip_longest(iterable1, iterable2, fillvalue=None)
The zip_longest function returns an iterator that aggregates elements from the iterables, filling missing values with a fillvalue.
Example:
import itertools
numbers = [1, 2, 3]
letters = ['a', 'b']
zipped = itertools.zip_longest(numbers, letters, fillvalue='x')
for num, letter in zipped:
print(f"{num}: {letter}")
Output:
1: a
2: b
3: x
5. itertools.chain(iterable1, iterable2, ...)
The chain function returns an iterator that chains together multiple iterables.
Example:
import itertools
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
numbers3 = [7, 8, 9]
chained = itertools.chain(numbers1, numbers2, numbers3)
for num in chained:
print(num)
Output:
1
2
3
4
5
6
7
8
9
6. itertools.cycle(iterable)
The cycle function returns an iterator that cycles through the elements of the iterable indefinitely.
Example:
import itertools
numbers = [1, 2, 3]
cycled = itertools.cycle(numbers)
for _ in range(10):
print(next(cycled))
Output:
1
2
3
1
2
3
1
2
3
1
7. itertools.repeat(object[, times])
The repeat function returns an iterator that repeats the object times times.
Example:
import itertools
obj = 'hello'
repeated = itertools.repeat(obj, 3)
for _ in range(3):
print(next(repeated))
Output:
hello
hello
hello
8. itertools.product(iterable1, iterable2, ...)
The product function returns an iterator that returns the Cartesian product of the iterables.
Example:
import itertools
numbers = [1, 2]
letters = ['a', 'b']
product = itertools.product(numbers, letters)
for num, letter in product:
print(f"{num}: {letter}")
Output:
1: a
1: b
2: a
2: b
9. itertools.accumulate(iterable, func)
The accumulate function returns an iterator that accumulates the elements of the iterable using the specified function.
Example:
import itertools
numbers = [1, 2, 3, 4]
accumulated = itertools.accumulate(numbers, func=lambda x, y: x + y)
for num in accumulated:
print(num)
Output:
1
3
6
10
10. itertools.starmap(function, iterable)
The starmap function returns an iterator that applies the function to the elements of the iterable, using the elements as arguments.
Example:
import itertools
numbers = [(1, 2), (3, 4), (5, 6)]
starmapped = itertools.starmap(lambda x, y: x + y, numbers)
for num in starmapped:
print(num)
Output:
3
7
11
These are all some of the functions from itertools that I have discussed that can boost the performance. There are other itertools functions available and please check them out.
Thank you for reading!!
If you like the article and would like to support me, make sure to:
- 👏 Clap for the story (50 claps) to help this article be featured
- Follow me on Medium
- 📰 View more content on my medium profile
- 🔔 Follow Me: LinkedIn | GitHub
Mastering the Art of Iteration: A Guide to Python’s itertools was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.
This content originally appeared on Level Up Coding - Medium and was authored by Harish Siva Subramanian

Harish Siva Subramanian | Sciencx (2024-08-20T11:27:30+00:00) Mastering the Art of Iteration: A Guide to Python’s itertools. Retrieved from https://www.scien.cx/2024/08/20/mastering-the-art-of-iteration-a-guide-to-pythons-itertools/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.