Whiskey Tango Foxtrot Whiskey Tango Foxtrot - 3 months ago 9
Python Question

Unusual permutations

I have few lists:

a = [1,2,3]
b = [4,5,6]
c = [7,8,9,10]


How do I generate all combinations like:

a[0], b[0]
a[1], b[1]
a[2], b[2]
a[0], b[0], c[0]
a[1], b[1], c[0]
a[2], b[2], c[0]
a[1], b[1], c[1]
a[2], b[2], c[2]
a[0], b[0], c[3]
a[1], b[1], c[3]
a[2], b[2], c[3]
.....


There can be only one value at a time from each list.

Imagine two or more lists Like a=[1,2,3] and b=[4,5,6] and c=[7,8,9] and I would like all possible pairs like (a[0], b[0]),(a[1], b[1]), (a[0], b[0], c[0])...

Answer

As per your example, you seem to want only abc-type permutations. So you either: 1) build your "permutations" explicitly, or 2) build all permutations and filter out those you do not want.

Explicit construction

  1. Build your list_of_lists, i.e. [['a1', 'a2', 'a3'], ['b1', 'b2'], ['c1']]
  2. Build your permutations. Use itertools.product, see All combinations of a list of lists
  3. From each of your permutations, you might want to create several, within a loop. E.g., from ('a1','b1','c1') get ('a1','b1','c1') and ('a1','b1'). That is easy.

You can fill in the gaps.

Build all and filter out

... Probably only useful if you need something (slightly) different from what I understood.