Powerset in Python finden
- Verwenden Sie den iterativen Ansatz, um ein Powerset in Python zu erhalten
-
Verwenden Sie die Funktion
itertools.combinations
, um ein Powerset in Python zu finden - Verwenden Sie die List Comprehensions, um ein Powerset in Python zu finden
- Verwenden Sie die rekursive Methode, um ein Powerset in Python zu 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