 # How to Create Cartesian Product of Two Lists in Python

Did you know that you can get a cartesian product of two lists or a list with itself in python? In this article, we will learn how to create cartesian product of two lists in Python.

## How to Create Cartesian Product of Two Lists in Python

Let us say you have the following lists that you want to create cartesian product for.

```lists = [
[1, 2, 3],
['a', 'b'],
[4, 5, 6]
]```

Starting python 2.6, you can use itertools.product to obtain cartesian product of two or more lists, or list with itself.

Here are the commands to create cartesian product of above 3 lists.

```import itertools

lists = [
[1, 2, 3],
['a', 'b'],
[4, 5]
]
for element in itertools.product(*lists):
print(element)```

Output will be as follows:

`[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]`

It will give you a list of tuples, where each tuple contains items from each of the 3 lists. Alternatively, you can also obtain the above output with the following commands.

```for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]):
print(element)```

Alternatively, if you want to create cartesian product of list a=[1,2,3] with itself, you can do so in the following couple of ways.

```for element in itertools.product([1, 2, 3], [1, 2, 3]):
print(element)```

Or as the following.

```import itertools

lists = [
[1, 2, 3],
[1, 2, 3]
]
for element in itertools.product(*lists):
print(element)```

If you have two separate lists, you can also use itertools.product function to create cartesian product of both lists. Here is a simple example to create cartesian product of two lists a and b.

```from itertools import product

l1 = [1,5,6]
l2 = [1,2,9]
print(list(product(l1, l2)))```

Here is the output you will see.

`[(1, 1), (1, 2), (1, 9), (5, 1), (5, 2), (5, 9), (6, 1), (6, 2), (6, 9)]`

In this article, we have learnt how to create cartesian product of multiple lists, as well as a list with itself.