Generieren aller Kombinationen einer Liste in Python
Hier ist die Frage:
Gegeben, eine Liste der Elemente in Python, wie würde ich gehen, erhalten Sie alle möglichen Kombinationen der Elemente?
Gibt es mehrere ähnliche Fragen auf dieser Website, die vorschlagen, mit itertools.kombinieren, aber das gibt nur eine Teilmenge dessen, was ich brauche:
stuff = [1, 2, 3]
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
print(subset)
()
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)
Wie Sie sehen, es gibt nur Elemente in einer strengen Ordnung, - nicht wieder (2, 1), (3, 2), (3, 1), (2, 1, 3), (3, 1, 2), (2, 3, 1), und (3, 2, 1). Gibt es da eine Abhilfe? Ich kann nicht scheinen zu kommen mit nichts.
InformationsquelleAutor der Frage Minas Abovyan | 2013-07-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
itertools.Permutationen
:Hilfe auf
itertools.permutations
:InformationsquelleAutor der Antwort Ashwini Chaudhary
Erzeugen können Sie alle Kombinationen aus einer Liste in python, verwenden Sie einfach den code
Ergebnis:
InformationsquelleAutor der Antwort saimadhu.polamuri
Sind Sie auf der Suche nach
itertools.Permutationen
statt?Vom
help(itertools.permutations)
,Beispielcode :
Aus Wikipedia, der Unterschied zwischen Permutationen und Kombinationen :
Permutation :
Kombination :
InformationsquelleAutor der Antwort Sukrit Kalra
itertools.permutations
ist das, was Sie wollen. Durch die mathematische definition, Reihenfolge spielt keine Rolle fürcombinations
Bedeutung(1,2)
ist als identisch zu(2,1)
. In der Erwägung, dass mitpermutations
jede einzelne Bestellung zählt als eine einzigartige permutation, so(1,2)
und(2,1)
sind völlig unterschiedlich.InformationsquelleAutor der Antwort Brien
Hier ist eine Lösung ohne itertools
Ersten können definieren, eine übersetzung zwischen einem Indikator-Vektor, der die
0
und1
s und eine sub-Liste (1
wenn das Element in der Unterliste)Nächsten, Auch definieren ein mapping von einer Zahl zwischen
0
und2^n-1
dem eine Binär-Vektor-Darstellung (mit string sformat
- Funktion) :Alles, was wir zu tun haben, ist zum Durchlaufen aller möglichen zahlen, und rufen Sie
indicators2sublist
InformationsquelleAutor der Antwort Uri Goren
Ich nehme an, Sie wollen alle möglichen Kombinationen als sets von Werten. Hier ist ein Stück code, den ich geschrieben habe, die helfen könnten, Ihnen eine Idee:
Hier ist ein Beispiel:
Ich denke, das hat n! Zeit, Komplexität, so vorsichtig sein. Dies funktioniert aber möglicherweise nicht die effizienteste
InformationsquelleAutor der Antwort Shashank Singh
dachte, ich würde setzen Sie diese gibt, da konnte ich nicht gut JEDES mögliche Ergebnis und wenn man bedenkt, ich habe nur die rohsten grundlegenden Kenntnisse, wenn es um python und wahrscheinlich gibt es eine viel elegantere Lösung...(auch Entschuldigung für die schlechte Variablennamen
Tests = [1, 2, 3]
testing2= [0]
n = -1
def testingSomethingElse(Anzahl):
while True:
bekam ich Weg mit == 4, weil ich arbeite mit ganzen zahlen aber haben Sie vielleicht zu ändern, dass entsprechend...
InformationsquelleAutor der Antwort Matt Slap