Alle möglichen Permutationen eines Satzes von Listen in Python

In Python habe ich eine Liste von n Listen mit jeweils einer variablen Anzahl von Elementen. Wie kann ich eine einzige Liste mit allen möglichen Permutationen erstellen:

Beispielsweise

[ [ a, b, c], [d], [e, f] ] 

Ich will

 [ [a, d, e] , [a, d, f], [b, d, e], [b, d, f], [c, d, e], [c, d, f] ] 

Beachten Sie, ich weiß nicht n im Voraus. Ich dachte, itertools.product wäre der richtige Ansatz, aber es erfordert mich, die Anzahl der Argumente im Voraus zu kennen

3 Solutions collect form web for “Alle möglichen Permutationen eines Satzes von Listen in Python”

Sie müssen nicht n im Voraus wissen, um itertools.product zu verwenden

 >>> import itertools >>> s=[ [ 'a', 'b', 'c'], ['d'], ['e', 'f'] ] >>> list(itertools.product(*s)) [('a', 'd', 'e'), ('a', 'd', 'f'), ('b', 'd', 'e'), ('b', 'd', 'f'), ('c', 'd', 'e'), ('c', 'd', 'f')] 

Itertools.product arbeitet für mich.

 >>> l=[ [ 1, 2, 3], [4], [5, 6] ] >>> list(itertools.product(*l)) [(1, 4, 5), (1, 4, 6), (2, 4, 5), (2, 4, 6), (3, 4, 5), (3, 4, 6)] >>> l=[ [ 1, 2, 3], [4], [5, 6],[7,8] ] >>> list(itertools.product(*l)) [(1, 4, 5, 7), (1, 4, 5, 8), (1, 4, 6, 7), (1, 4, 6, 8), (2, 4, 5, 7), (2, 4, 5, 8), (2, 4, 6, 7), (2, 4, 6, 8), (3, 4, 5, 7), (3, 4, 5, 8), (3, 4, 6, 7), (3, 4, 6, 8)] >>> 

Sie können es mit einem mehrstufigen Listenverständnis tun:

 >>> L1=['a','b','c'] >>> L2=['d'] >>> L3=['e','f'] >>> [[i,j,k] for i in L1 for j in L2 for k in L3] [['a', 'd', 'e'], ['a', 'd', 'f'], ['b', 'd', 'e'], ['b', 'd', 'f'], ['c', 'd', 'e'], ['c', 'd', 'f']] 
Python ist die beste Programmiersprache der Welt.