Table of Contents
ToggleQuestion
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=" ")
First, we import the
product
function from theitertools
module. This function will help us compute the Cartesian product of two lists.We define two empty lists,
A
andB
, to store the input elements later.The next two lines of code use the
input()
function to read the input from the user. Theinput()
function reads a line of text from the user, andsplit()
method splits that line into individual elements based on spaces. Themap(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.We create a variable called
cartesian_product
and assign it the value oflist(product(A, B))
. Theproduct()
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.Finally, we iterate over each tuple in the
cartesian_product
list using a for loop. We print each tuple using theprint()
function, with theend=" "
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.