Heim > Backend-Entwicklung > Python-Tutorial > Wie generiert man alle Teilmengen einer Menge mit Pythons „itertools.combinations'?

Wie generiert man alle Teilmengen einer Menge mit Pythons „itertools.combinations'?

Linda Hamilton
Freigeben: 2024-12-11 13:52:12
Original
418 Leute haben es durchsucht

How to Generate All Subsets of a Set Using Python's `itertools.combinations`?

So generieren Sie alle Teilmengen einer Menge mit itertools.combinations

In Python bietet das Modul itertools.combinations eine einfache und effiziente Methode zur Erzeugung der Potenzmenge einer Menge. So können Sie es machen:

from itertools import chain, combinations

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
Nach dem Login kopieren

Um beispielsweise alle Teilmengen der Menge {0, 1, 2, 3} zu finden, würden Sie den folgenden Code verwenden:

>>> list(powerset([0, 1, 2, 3]))
[(), (0,), (1,), (2,), (3,), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3), (0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3), (0, 1, 2, 3)]
Nach dem Login kopieren

Beachten Sie, dass das leere Tupel () im Powerset enthalten ist, da es die leere Teilmenge darstellt.

Wenn Sie das leere Tupel lieber nicht haben möchten In den Ergebnissen können Sie den Bereich in der Kombinationsschleife wie folgt ändern:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
Nach dem Login kopieren

Dadurch wird das leere Tupel aus den zurückgegebenen Teilmengen ausgeschlossen.

Das obige ist der detaillierte Inhalt vonWie generiert man alle Teilmengen einer Menge mit Pythons „itertools.combinations'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage