Reputation: 47
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
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