Powerset in Python finden

Hemank Mehtani 30 Januar 2023
  1. Verwenden Sie den iterativen Ansatz, um ein Powerset in Python zu erhalten
  2. Verwenden Sie die Funktion itertools.combinations, um ein Powerset in Python zu finden
  3. Verwenden Sie die List Comprehensions, um ein Powerset in Python zu finden
  4. Verwenden Sie die rekursive Methode, um ein Powerset in Python zu finden
Powerset in Python finden

In der Mathematik ist eine Potenzmenge einer beliebigen Menge eine Menge, die alle möglichen Teilmengen einer gegebenen Menge zusammen mit einer leeren Menge enthält. Mit anderen Worten, alle Teilmengen einer Menge werden auch als Powerset bezeichnet. In Python kann es eine Menge von Listen, Mengen, Strings usw. geben.

In diesem Tutorial finden wir die Potenzmenge einer bestimmten Menge in Python.

Verwenden Sie den iterativen Ansatz, um ein Powerset in Python zu erhalten

Obwohl wir sowohl den rekursiven Ansatz als auch den iterativen Ansatz verwenden können, um ein Powerset zu finden, wird der iterative Ansatz dem rekursiven vorgezogen, da er ein schnellerer Prozess ist.

Wir verwenden eine verschachtelte for-Schleife, um ein solches Powerset zu erstellen.

Beispielsweise,

def powerset(fullset):
    listsub = list(fullset)
    subsets = []
    for i in range(2 ** len(listsub)):
        subset = []
        for k in range(len(listsub)):
            if i & 1 << k:
                subset.append(listsub[k])
        subsets.append(subset)
    return subsets


subsets = powerset(set([1, 2, 3, 4]))
print(subsets)
print(len(subsets))

Ausgabe:

[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]
16

Verwenden Sie die Funktion itertools.combinations, um ein Powerset in Python zu finden

itertools ist ein Modul in Python, das verwendet wird, um über Datenstrukturen zu iterieren. Diese Datenstrukturen werden auch als Iterable bezeichnet. Sie können mit der for-Schleife übersprungen werden.

Die Funktion combinations aus diesem Modul kann Kombinationen eines Sets zu einem Powerset erstellen.

Siehe den Code unten.

from itertools import combinations


def powerset(string):
    n = len(string)
    for i in range(0, n + 1):
        for element in combinations(string, i):
            print("".join(element))


string = ["x", "y", "z"]
powerset(string)

Ausgabe:

x
y
z
xy
xz
yz
xyz

Verwenden Sie die List Comprehensions, um ein Powerset in Python zu finden

List Comprehensions ist eine Möglichkeit, neue Listen basierend auf der bestehenden Liste zu erstellen. Es bietet eine kürzere Syntax, die kompakter und schneller ist als die anderen Funktionen und Schleifen, die zum Erstellen einer Liste verwendet werden.

Auch in dieser Methode verwenden wir eine verschachtelte for-Schleife.

Beispielsweise,

def get_subsets(fullset):
    listrep = list(fullset)
    n = len(listrep)
    return [[listrep[k] for k in range(n) if i & 1 << k] for i in range(2 ** n)]


string = ["x", "y", "z"]
print(get_subsets(string))

Ausgabe:

[[], ['x'], ['y'], ['x', 'y'], ['z'], ['x', 'z'], ['y', 'z'], ['x', 'y', 'z']]

Verwenden Sie die rekursive Methode, um ein Powerset in Python zu finden

Die rekursive Methode ist eine Methode, bei der eine Funktion sich selbst mit verschiedenen Argumenten aufruft. Wir können eine rekursive Funktion erstellen, um die Potenz einer Menge zu finden.

Beispielsweise,

def powerSet(string, index, c):
    if index == len(string):
        print(c)
        return
    powerSet(string, index + 1, c + string[index])
    powerSet(string, index + 1, c)


s1 = ["a", "b", "c"]
index = 0
c = ""
powerSet(s1, index, c)

Ausgabe:

abc
ab
ac
a
bc
b
c

Verwandter Artikel - Python Set