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
Linda HamiltonOriginal
2024-12-11 13:52:12444Durchsuche

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))

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)]

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))

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!

Stellungnahme:
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