Trouver Powerset en Python
- Utilisez l’approche itérative pour obtenir un ensemble de puissance en Python
-
Utilisez la fonction
itertools.combinations
pour trouver un ensemble de puissance en Python - Utilisez la méthode de compréhensions de liste pour trouver un ensemble de puissance en Python
- Utilisez la méthode récursive pour trouver un jeu de puissance en Python
En mathématiques, un ensemble de puissance de n’importe quel ensemble est un ensemble qui contient tous les sous-ensembles possibles d’un ensemble donné ainsi qu’un ensemble vide. En d’autres termes, tous les sous-ensembles d’un ensemble sont également appelés ensembles de puissance. Il peut y avoir un ensemble puissant de listes, d’ensembles, de chaînes, etc., en Python.
Dans ce tutoriel, nous allons trouver l’ensemble de puissance d’un ensemble donné en Python.
Utilisez l’approche itérative pour obtenir un ensemble de puissance en Python
Bien que nous puissions utiliser à la fois une approche récursive et une approche itérative pour trouver un ensemble de puissances, l’approche itérative est préférée à la récursive car il s’agit d’un processus plus rapide.
Nous utilisons une boucle for
imbriquée pour créer un tel ensemble de puissance.
Par example,
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))
Production:
[[], [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
Utilisez la fonction itertools.combinations
pour trouver un ensemble de puissance en Python
itertools
est un module en Python utilisé pour itérer sur des structures de données. Ces structures de données sont également appelées itérables. Ils peuvent être franchis en utilisant la boucle for.
La fonction combinations
de ce module permet de créer des combinaisons d’un ensemble pour créer un ensemble de puissance.
Voir le code ci-dessous.
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)
Production:
x
y
z
xy
xz
yz
xyz
Utilisez la méthode de compréhensions de liste pour trouver un ensemble de puissance en Python
Compréhensions de listes est un moyen de créer de nouvelles listes basées sur la liste existante. Il offre une syntaxe plus courte étant plus compacte et plus rapide que les autres fonctions et boucles utilisées pour créer une liste.
Nous utilisons également une boucle for
imbriquée dans cette méthode.
Par example,
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))
Production:
[[], ['x'], ['y'], ['x', 'y'], ['z'], ['x', 'z'], ['y', 'z'], ['x', 'y', 'z']]
Utilisez la méthode récursive pour trouver un jeu de puissance en Python
La méthode récursive est une méthode où une fonction continue de s’appeler avec différents arguments. Nous pouvons créer une fonction récursive pour trouver l’ensemble de puissance d’un ensemble.
Par example,
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)
Production:
abc
ab
ac
a
bc
b
c