Itertools: kartesisches Produkt von Permutationen

Mit pythons itertools , würde ich gerne einen Iterator über das äußere Produkt aller Permutationen einer Reihe von Listen zu schaffen. Ein explizites Beispiel:

 import itertools A = [1,2,3] B = [4,5] C = [6,7] for x in itertools.product(itertools.permutations(A),itertools.permutations(B),itertools.permutations(C)): print x 

Während dies funktioniert, möchte ich es auf eine beliebige Liste von Listen verallgemeinern. Ich habe es versucht:

 for x in itertools.product(map(itertools.permutations,[A,B,C])): print x 

Aber es hat nicht getan, was ich beabsichtigte. Die erwartete Leistung ist:

 ((1, 2, 3), (4, 5), (6, 7)) ((1, 2, 3), (4, 5), (7, 6)) ((1, 2, 3), (5, 4), (6, 7)) ((1, 2, 3), (5, 4), (7, 6)) ((1, 3, 2), (4, 5), (6, 7)) ((1, 3, 2), (4, 5), (7, 6)) ((1, 3, 2), (5, 4), (6, 7)) ((1, 3, 2), (5, 4), (7, 6)) ((2, 1, 3), (4, 5), (6, 7)) ((2, 1, 3), (4, 5), (7, 6)) ((2, 1, 3), (5, 4), (6, 7)) ((2, 1, 3), (5, 4), (7, 6)) ((2, 3, 1), (4, 5), (6, 7)) ((2, 3, 1), (4, 5), (7, 6)) ((2, 3, 1), (5, 4), (6, 7)) ((2, 3, 1), (5, 4), (7, 6)) ((3, 1, 2), (4, 5), (6, 7)) ((3, 1, 2), (4, 5), (7, 6)) ((3, 1, 2), (5, 4), (6, 7)) ((3, 1, 2), (5, 4), (7, 6)) ((3, 2, 1), (4, 5), (6, 7)) ((3, 2, 1), (4, 5), (7, 6)) ((3, 2, 1), (5, 4), (6, 7)) ((3, 2, 1), (5, 4), (7, 6)) 

One Solution collect form web for “Itertools: kartesisches Produkt von Permutationen”

Du hast die * verpasst, um die Liste in 3 Argumente auszupacken

 itertools.product(*map(itertools.permutations,[A,B,C])) 
Python ist die beste Programmiersprache der Welt.