HackerRank Python: itertools.product() Solution

Table of Contents

Question

This tool computes the cartesian product of input iterables.
It is equivalent to nested for-loops.
For example, product(A, B) returns the same as ((x,y) for x in A for y in B).

Sample Code

>>> from itertools import product
>>>
>>> print list(product([1,2,3],repeat = 2))
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
>>>
>>> print list(product([1,2,3],[3,4]))
[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]
>>>
>>> A = [[1,2,3],[3,4,5]]
>>> print list(product(*A))
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 3), (3, 4), (3, 5)]
>>>
>>> B = [[1,2,3],[3,4,5],[7,8]]
>>> print list(product(*B))
[(1, 3, 7), (1, 3, 8), (1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (2, 3, 7), (2, 3, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8), (3, 3, 7), (3, 3, 8), (3, 4, 7), (3, 4, 8), (3, 5, 7), (3, 5, 8)]

Task

You are given a two lists A and B. Your task is to compute their cartesian product AXB.

Example

A = [1, 2]
B = [3, 4]

AxB = [(1, 3), (1, 4), (2, 3), (2, 4)]

Note: A and B are sorted lists, and the cartesian product’s tuples should be output in sorted order.

Input Format

The first line contains the space separated elements of list A.

The second line contains the space separated elements of list B.

Both lists have no duplicate integer elements.

Constraints

0 < A < B
0 < B < 30

Output Format

Output the space separated tuples of the cartesian product.

Sample Input

 1 2
 3 4

Sample Output

 (1, 3) (1, 4) (2, 3) (2, 4)

Solution

				
					from itertools import product

# Input
A = list(map(int, input().split()))
B = list(map(int, input().split()))

# Compute Cartesian product
cartesian_product = list(product(A, B))

# Output
for item in cartesian_product:
    print(item, end=" ")

				
			
  1. First, we import the product function from the itertools module. This function will help us compute the Cartesian product of two lists.

  2. We define two empty lists, A and B, to store the input elements later.

  3. The next two lines of code use the input() function to read the input from the user. The input() function reads a line of text from the user, and split() method splits that line into individual elements based on spaces. The map(int, ...) part converts each element to an integer. Finally, list() is used to convert the resulting iterable into a list. This allows the user to input the elements of lists A and B on separate lines.

  4. We create a variable called cartesian_product and assign it the value of list(product(A, B)). The product() function takes two iterables (in this case, lists A and B) and returns an iterator that generates tuples containing all possible combinations of elements, where the first element is from A and the second element is from B. By converting it to a list, we can access and print the tuples easily.

  5. Finally, we iterate over each tuple in the cartesian_product list using a for loop. We print each tuple using the print() function, with the end=" " argument to separate the tuples by spaces instead of newlines

If you find anything wrong in this Solution, feel free to reach us in the comment section.

Sharing Is Caring:

Leave a Comment