Encuentra Powerset en Python

Hemank Mehtani 30 enero 2023
  1. Utilice el enfoque iterativo para obtener un Powerset en Python
  2. Utilice la función itertools.combinations para encontrar un Powerset en Python
  3. Utilice el método de comprensión de listas para encontrar un conjunto de poder en Python
  4. Utilice el método recursivo para encontrar un Powerset en Python
Encuentra 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

Artículo relacionado - Python Set