views:

100

answers:

3

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.

A: 

Check the Python itertools standard module:

itertools.combinations(iterable, r)

Return r length subsequences of elements from the input iterable.

Tarantula
+4  A: 

The simplest way:

for i in Class1:
    for j in Class2:
        for k in Class3:
            print (i,j,k)
Aif
+10  A: 

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
FM
@FM-Perfect! Thanks so much.
myClone