Simor Atias
Simor Atias

Reputation: 47

Iterations on a matrix in Python

I need a little help about the way to iterate all the possible combination.

For example, I have this matrix:

M = [['RG', 'GG', 'BG'], ['RR', 'GR', 'BR'], ['RR', 'GR', 'BR'], ['RB', 'GB', 'BB']]

I need each iteration will be:

RG, RR, RR, RB
RG, RR, RR, GB
RG, RR, RR, BB

RG, RR, GR, RB
RG, RR, GR, GB
RG, RR, GR, BB

RG, RR, BR, RB
RG, RR, BR, GB
RG, RR, BR, BB

.., .., .., ..
.., .., .., ..
.., .., .., ..

BG, BR, BR, RB
BG, BR, BR, GB
BG, BR, BR, BB

Thank you all :)

Upvotes: 0

Views: 35

Answers (1)

ForceBru
ForceBru

Reputation: 44926

You can use itertools.product:

>>> import itertools
>>> c = itertools.product(*[['RG', 'GG', 'BG'], ['RR', 'GR', 'BR'], ['RR', 'GR', 'BR'], ['RB', 'GB', 'BB']])
>>> list(c)
[('RG', 'RR', 'RR', 'RB'), ('RG', 'RR', 'RR', 'GB'), ('RG', 'RR', 'RR', 'BB'), ('RG', 'RR', 'GR', 'RB'), ('RG', 'RR', 'GR', 'GB'), ('RG', 'RR', 'GR', 'BB'), ('RG', 'RR', 'BR', 'RB'), ('RG', 'RR', 'BR', 'GB'), ('RG', 'RR', 'BR', 'BB'), ('RG', 'GR', 'RR', 'RB'), ('RG', 'GR', 'RR', 'GB'), ('RG', 'GR', 'RR', 'BB'), ('RG', 'GR', 'GR', 'RB'), ('RG', 'GR', 'GR', 'GB'), ('RG', 'GR', 'GR', 'BB'), ('RG', 'GR', 'BR', 'RB'), ('RG', 'GR', 'BR', 'GB'), ('RG', 'GR', 'BR', 'BB'), ('RG', 'BR', 'RR', 'RB'), ('RG', 'BR', 'RR', 'GB'), ('RG', 'BR', 'RR', 'BB'), ('RG', 'BR', 'GR', 'RB'), ('RG', 'BR', 'GR', 'GB'), ('RG', 'BR', 'GR', 'BB'), ('RG', 'BR', 'BR', 'RB'), ('RG', 'BR', 'BR', 'GB'), ('RG', 'BR', 'BR', 'BB'), ('GG', 'RR', 'RR', 'RB'), ('GG', 'RR', 'RR', 'GB'), ('GG', 'RR', 'RR', 'BB'), ('GG', 'RR', 'GR', 'RB'), ('GG', 'RR', 'GR', 'GB'), ('GG', 'RR', 'GR', 'BB'), ('GG', 'RR', 'BR', 'RB'), ('GG', 'RR', 'BR', 'GB'), ('GG', 'RR', 'BR', 'BB'), ('GG', 'GR', 'RR', 'RB'), ('GG', 'GR', 'RR', 'GB'), ('GG', 'GR', 'RR', 'BB'), ('GG', 'GR', 'GR', 'RB'), ('GG', 'GR', 'GR', 'GB'), ('GG', 'GR', 'GR', 'BB'), ('GG', 'GR', 'BR', 'RB'), ('GG', 'GR', 'BR', 'GB'), ('GG', 'GR', 'BR', 'BB'), ('GG', 'BR', 'RR', 'RB'), ('GG', 'BR', 'RR', 'GB'), ('GG', 'BR', 'RR', 'BB'), ('GG', 'BR', 'GR', 'RB'), ('GG', 'BR', 'GR', 'GB'), ('GG', 'BR', 'GR', 'BB'), ('GG', 'BR', 'BR', 'RB'), ('GG', 'BR', 'BR', 'GB'), ('GG', 'BR', 'BR', 'BB'), ('BG', 'RR', 'RR', 'RB'), ('BG', 'RR', 'RR', 'GB'), ('BG', 'RR', 'RR', 'BB'), ('BG', 'RR', 'GR', 'RB'), ('BG', 'RR', 'GR', 'GB'), ('BG', 'RR', 'GR', 'BB'), ('BG', 'RR', 'BR', 'RB'), ('BG', 'RR', 'BR', 'GB'), ('BG', 'RR', 'BR', 'BB'), ('BG', 'GR', 'RR', 'RB'), ('BG', 'GR', 'RR', 'GB'), ('BG', 'GR', 'RR', 'BB'), ('BG', 'GR', 'GR', 'RB'), ('BG', 'GR', 'GR', 'GB'), ('BG', 'GR', 'GR', 'BB'), ('BG', 'GR', 'BR', 'RB'), ('BG', 'GR', 'BR', 'GB'), ('BG', 'GR', 'BR', 'BB'), ('BG', 'BR', 'RR', 'RB'), ('BG', 'BR', 'RR', 'GB'), ('BG', 'BR', 'RR', 'BB'), ('BG', 'BR', 'GR', 'RB'), ('BG', 'BR', 'GR', 'GB'), ('BG', 'BR', 'GR', 'BB'), ('BG', 'BR', 'BR', 'RB'), ('BG', 'BR', 'BR', 'GB'), ('BG', 'BR', 'BR', 'BB')]

Upvotes: 1

Related Questions