As an example, I have the following list:
['ABC','DEF','GHI','JKL']
By my reckoning, there should be 26 combinations i.e.
ABCDEFGHIJKL
ABCDEFJKLGHI
ABCGHIDEFJKL
ABCGHIJKLDEF
ABCJKLDEFGHI
ABCJKLGHIDEF
...
How would I do this in Python?
Thanks
As an example, I have the following list:
['ABC','DEF','GHI','JKL']
By my reckoning, there should be 26 combinations i.e.
ABCDEFGHIJKL
ABCDEFJKLGHI
ABCGHIDEFJKL
ABCGHIJKLDEF
ABCJKLDEFGHI
ABCJKLGHIDEF
...
How would I do this in Python?
Thanks
You're describing the basic use of itertools.permutations:
>>> import itertools
>>> L = ['ABC','DEF','GHI','JKL']
>>> for permutation in itertools.permutations(L):
... print ''.join(permutation)
...
ABCDEFGHIJKL
ABCDEFJKLGHI
ABCGHIDEFJKL
ABCGHIJKLDEF
...
JKLGHIDEFABC
One approach that uses itertools:
>>> import itertools
>>> print list(itertools.permutations(['ABC','DEF','GHI','JKL'], 4))
[('ABC', 'DEF', 'GHI', 'JKL'), ('ABC', 'DEF', 'JKL', 'GHI'), ('ABC', 'GHI', 'DEF', 'JKL'), ('ABC', 'GHI', 'JKL', 'DEF'), ('ABC', 'JKL', 'DEF', 'GHI'), ('ABC', 'JKL', 'GHI', 'DEF'), ('DEF', 'ABC', 'GHI', 'JKL'), ('DEF', 'ABC', 'JKL', 'GHI'), ('DEF', 'GHI', 'ABC', 'JKL'), ('DEF', 'GHI', 'JKL', 'ABC'), ('DEF', 'JKL', 'ABC', 'GHI'), ('DEF', 'JKL', 'GHI', 'ABC'), ('GHI', 'ABC', 'DEF', 'JKL'), ('GHI', 'ABC', 'JKL', 'DEF'), ('GHI', 'DEF', 'ABC', 'JKL'), ('GHI', 'DEF', 'JKL', 'ABC'), ('GHI', 'JKL', 'ABC', 'DEF'), ('GHI', 'JKL', 'DEF', 'ABC'), ('JKL', 'ABC', 'DEF', 'GHI'), ('JKL', 'ABC', 'GHI', 'DEF'), ('JKL', 'DEF', 'ABC', 'GHI'), ('JKL', 'DEF', 'GHI', 'ABC'), ('JKL', 'GHI', 'ABC', 'DEF'), ('JKL', 'GHI', 'DEF', 'ABC')]
>>> print len(list(itertools.permutations(['ABC','DEF','GHI','JKL'], 4)))
24