0

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

Baba
  • 47
  • 8
pee2pee
  • 3,619
  • 7
  • 52
  • 133

2 Answers2

3

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
wim
  • 338,267
  • 99
  • 616
  • 750
0

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
Alex Reynolds
  • 95,983
  • 54
  • 240
  • 345