Encuentra Powerset en Python
- Utilice el enfoque iterativo para obtener un Powerset en Python
-
Utilice la función
itertools.combinations
para encontrar un Powerset en Python - Utilice el método de comprensión de listas para encontrar un conjunto de poder en Python
- Utilice el método recursivo para encontrar un Powerset en Python
En matemáticas, un conjunto de potencias de cualquier conjunto es un conjunto que contiene todos los posibles subconjuntos de un conjunto dado junto con un conjunto vacío. En otras palabras, todos los subconjuntos de un conjunto también se conocen como powerset. Puede haber un conjunto poderoso de listas, conjuntos, cadenas, etc., en Python.
En este tutorial, encontraremos el conjunto de potencias de un conjunto dado en Python.
Utilice el enfoque iterativo para obtener un Powerset en Python
Aunque podemos usar tanto el enfoque recursivo como el enfoque iterativo para encontrar un conjunto de poder, se prefiere el enfoque iterativo sobre el recursivo, ya que es un proceso más rápido.
Usamos un bucle anidado for
para crear tal conjunto de potencias.
Por ejemplo,
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))
Producción :
[[], [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
Utilice la función itertools.combinations
para encontrar un Powerset en Python
itertools
es un módulo en Python usado para iterar sobre estructuras de datos. Estas estructuras de datos también se conocen como iterables. Se pueden pasar por alto utilizando for-loop.
La función combinations
de este módulo puede crear combinaciones de un conjunto para crear un conjunto de potencias.
Vea el código a continuación.
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)
Producción :
x
y
z
xy
xz
yz
xyz
Utilice el método de comprensión de listas para encontrar un conjunto de poder en Python
Comprensión de listas es una forma de crear nuevas listas basadas en la lista existente. Ofrece una sintaxis más corta siendo más compacta y rápida que las otras funciones y bucles utilizados para crear una lista.
También usamos un bucle anidado for
en este método.
Por ejemplo,
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))
Producción :
[[], ['x'], ['y'], ['x', 'y'], ['z'], ['x', 'z'], ['y', 'z'], ['x', 'y', 'z']]
Utilice el método recursivo para encontrar un Powerset en Python
El método recursivo es un método en el que una función sigue invocándose a sí misma con diferentes argumentos. Podemos crear una función recursiva para encontrar el conjunto de potencias de un conjunto.
Por ejemplo,
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)
Producción :
abc
ab
ac
a
bc
b
c