Ich benutze Python (2.7.2) und ich brauche alle Permutationen ohne Wiederholung aus einer Liste. Genauer gesagt, gibtPython Itertools Permutationen mit Doppelelementen
for i in itertools.permutations([1,2,3]): print i
richtig
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
Aber jetzt (oder, ich suche nach etwas, das folgende
for i in myfunction([1,2,2]): print i
(1,2,2)
(2,2,1)
(2,1,2)
täte Während itertools zweimal diese Liste geben würde ([ 1,1,1]) als Eingabe wird es nur sechsmal wiederholt). Dies ist im Grunde etwas zwischen itertools.permutations und iertools.combinations. Ich habe versucht, mit Sets zu arbeiten, aber alle Lösungen, die ich ausprobierte, haben immer neue Probleme verursacht und nie die gewünschte Ausgabe erreicht.
Können Sie nicht filtern, dass nur das Ergebnis durch einen 'Set'? 'für i im Satz (itertools.permutations ([1,2,2])): print i' –
Works. Danke, irgendwie ist es am Anfang nicht gelungen, dorthin zu gelangen und endete in komplizierten Lösungen. – Eulenfuchswiesel
Es gibt eine effiziente Möglichkeit, das in [dieser alten Antwort von mir] zu tun (http://stackoverflow.com/a/31678111/4014959) –