 Open in App
Not now

# Python – Itertools.Product()

• Difficulty Level : Easy
• Last Updated : 04 Sep, 2021

In the terms of Mathematics Cartesian Product of two sets is defined as the set of all ordered pairs (a, b) where a belongs to A and b belongs to B. Consider the below example for better understanding.
Examples:

Input : arr1 = [1, 2, 3]
arr2 = [5, 6, 7]
Output : [(1, 5), (1, 6), (1, 7), (2, 5), (2, 6), (2, 7), (3, 5), (3, 6), (3, 7)]
Input : arr1 = [10, 12]
arr2 = [8, 9, 10]
Output : [(10, 8), (10, 9), (10, 10), (12, 8), (12, 9), (12, 10)]

The above solution can be done by looping but we will use a special Python library itertools.product() for finding the Cartesian Product. Let’s go through the working and use cases of this Python library.

#### What are Itertools in Python?

Python Itertools is a library in Python which consists of multiple methods that are used in various iterators to compute a fast and code efficient solution.

itertools.product() falls under the category called Combinatoric iterators of the Python itertools library.

#### What does itertools.product() do?

itertools.product() is used to find the cartesian product from the given iterator, output is lexicographic ordered. The itertools.product() can used in two different ways:

• itertools.product(*iterables, repeat=1):
It returns the cartesian product of the provided iterable with itself for the number of times specified by the optional keyword “repeat”. For example, product(arr, repeat=3) means the same as product(arr, arr, arr).
• itertools.product(*iterables):
It returns the cartesian product of all the iterable provided as the argument. For example, product(arr1, arr2, arr3).

Example:

## Python3

 `from` `itertools ``import` `product`   `def` `cartesian_product(arr1, arr2):`   `    ``# return the list of all the computed tuple` `    ``# using the product() method` `    ``return` `list``(product(arr1, arr2)) ` `  `  `# Driver Function ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``arr1 ``=` `[``1``, ``2``, ``3``]` `    ``arr2 ``=` `[``5``, ``6``, ``7``]` `    ``print``(cartesian_product(arr1, arr2))`

Output:

[(1, 5), (1, 6), (1, 7), (2, 5), (2, 6), (2, 7), (3, 5), (3, 6), (3, 7)]

My Personal Notes arrow_drop_up
Related Articles