Powerset-Generierung: Ein eleganter Ansatz
Frage:
Wie können wir bei einer gegebenen Menge effizient rechnen? das Powerset, das alle möglichen Teilmengen des Originals umfasst gesetzt?
Antwort:
Pythons vielseitiges itertools-Modul bietet eine bemerkenswerte Lösung für die Powerset-Generierung, wie unten gezeigt:
from itertools import chain, combinations def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
Erklärung:
Ausgabe:
Wenn wir diese Powerset-Funktion auf eine Iterable anwenden, die die Elemente „abcd“ enthält, erzeugt sie das folgende Powerset:
[(), ('a',), ('b',), ('c',), ('d',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd'), ('a', 'b', 'c', 'd')]
Anpassung:
Wenn das anfängliche leere Tupel in der Ausgabe unerwünscht ist, ändern Sie einfach den Bereich Anweisung, einen Bereich von 1 bis zur Länge des Iterables plus 1 zu verwenden, wodurch leere Kombinationen effektiv aus dem Powerset ausgeschlossen werden.
Das obige ist der detaillierte Inhalt vonWie können wir die Potenzmenge einer gegebenen Menge effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!