„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie teilen Sie eine Sammlung in alle möglichen Untergruppen in Python auf?

Wie teilen Sie eine Sammlung in alle möglichen Untergruppen in Python auf?

Gepostet am 2025-03-13
Durchsuche:439

How Can You Partition a Set Into All Its Possible Subsets in Python?

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))
Neuestes Tutorial Mehr>

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