Trouver Powerset en Python

Hemank Mehtani 30 janvier 2023
  1. Utilisez l’approche itérative pour obtenir un ensemble de puissance en Python
  2. Utilisez la fonction itertools.combinations pour trouver un ensemble de puissance en Python
  3. Utilisez la méthode de compréhensions de liste pour trouver un ensemble de puissance en Python
  4. Utilisez la méthode récursive pour trouver un jeu de puissance en Python
Trouver Powerset 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

Article connexe - Python Set