Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python effizient alle möglichen Teilmengen einer Zahlenliste generieren?
Alle möglichen Kombinationen aus einer Liste von Zahlen ermitteln
Die Aufgabe besteht darin, alle möglichen Kombinationen (2^N) der Elemente einer Liste zu erhalten , unabhängig von ihrer Länge.
Brute-Force Ansatz
Ein möglicher Ansatz besteht darin, die dezimalen Ganzzahlen 1–32768 zu durchlaufen und ihre binären Darstellungen als Filter zu verwenden, um die entsprechenden Listenelemente auszuwählen. Diese Methode hat jedoch eine zeitliche Komplexität von O(32768), was für große Listen ineffizient sein kann.
Optimierte Lösung
Eine effizientere Lösung ist die Verwendung von itertools-Bibliothek. Der folgende Code generiert alle möglichen Kombinationen der Listenelemente in Python:
import itertools stuff = [1, 2, 3] combinations = list(itertools.chain(*map(lambda x: itertools.combinations(stuff, x), range(0, len(stuff)+1)))) for subset in combinations: print(subset)
Dieser Code generiert alle Teilmengen der gegebenen Liste, einschließlich der leeren Menge und der Originalliste selbst. Dies geschieht durch die Erstellung eines Generators, der alle möglichen Kombinationen für jede Länge „L“ generiert, und die anschließende Verwendung der Funktion „chain()“, um alle Generatoren zu einem einzigen Iterable zu verketten.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient alle möglichen Teilmengen einer Zahlenliste generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!