partitionieren setzt in python
Die vorliegende Aufgabe besteht darin, eine bestimmte Reihe von Elementen in alle möglichen Teilmengen zu teilen. Zum Beispiel ergibt die Partitionation des Satzes [1, 2, 3] die folgenden Teilmengen:
[[1], [2], [3]] [[1,2], [3]] [[1], [2,3]] [[1,3], [2]] [[1,2,3]]
rekursive Lösung
Ein Ansatz für dieses Problem ist eine Rekursion. Bei einer Partition von N-1-Elementen können wir sie erweitern, um eine Partition von N-Elementen zu erstellen, indem wir entweder das n-te Element in einem der vorhandenen Teilmengen oder eine neue Singleton-Untergruppe mit nur dem n-ten Element erstellen.
Diese rekursiv Bibliotheken:
def partition(collection):
if len(collection) == 1:
yield [ collection ]
return
first = collection[0]
for smaller in partition(collection[1:]):
# insert `first` in each of the subpartition's subsets
for n, subset in enumerate(smaller):
yield smaller[:n] [[ first ] subset] smaller[n 1:]
# put `first` in its own subset
yield [ [ first ] ] smaller
something = list(range(1,5))
for n, p in enumerate(partition(something), 1):
print(n, sorted(p))
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3