myClone - 9 months ago 72

Python Question

I am not sure how to go about this in Python, if its even possible. What I need to do is create an array (or a matrix, or vector?) from 3 separate arrays. Each array as 4 elements as such, they return this:

Class1 = [1,2,3,4]

Class2 = [1,2,3,4]

Class3 = [1,2,3,4]

Now what I would like to do is return all possible combinations of these three classes.

Example:

1 1 1

2 1 1

3 1 1

4 1 1

1 2 1

2 2 1

3 2 1

4 2 1...

...and so on to 64 rows (4 elements *16 possible combinations for each class = 64 rows

I am hoping there is a way to do this in python. I am sure there is but I am not sure what the most efficient way to go about would be. Perhaps a "for in" loop statement that iterates over each element for each class? Or now that I am researching this, would itertools handle this?

Thanks in advance for any help offered.

Answer

What you want is called a Cartesian product:

```
import itertools
iterables = [ [1,2,3,4], [88,99], ['a','b'] ]
for t in itertools.product(*iterables):
print t
```

Source (Stackoverflow)