
Make a cartesian product from two tuples in Python
Here is an example to make a cartesian product of two tuples in Python.
x = ('a', 'b')
y = ('c', 'd')
z = tuple((i, j) for i in x for j in y)
print(z)
# (('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'))
print(type(z))
# <class 'tuple'>
The i and j are the local variables iterating x and y respectively. The pair of i and j is an element of the cartesian product. The expression in the round brackets is called a generator expression and in fact it's a generator as follows.
x = ('a', 'b')
y = ('c', 'd')
g = ((i, j) for i in x for j in y)
print(g) # <generator object <genexpr> at 0x110b2feb0>
print(type(g)) # <class 'generator'>
z = tuple(g)
print(z) # (('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'))
Python generator is often used to combine multiple tuples or lists like this.
x = (1, 2)
y = (3, 4)
g = (i * j for i in x for j in y)
z = tuple(g)
print(z) # (3, 4, 6, 8)
Each element of the new tuple is the multiplication of x's number and y's number.
Comments
Powered by Markdown