Comment générer tous les sous-ensembles d'un ensemble à l'aide d'itertools.combinations
En Python, le module itertools.combinations fournit une méthode simple et efficace pour générer l’ensemble de puissances d’un ensemble. Voici comment procéder :
from itertools import chain, combinations def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
Par exemple, pour trouver tous les sous-ensembles de l'ensemble {0, 1, 2, 3}, vous utiliserez le code suivant :
>>> list(powerset([0, 1, 2, 3])) [(), (0,), (1,), (2,), (3,), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3), (0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3), (0, 1, 2, 3)]
Notez que le tuple vide () est inclus dans l'ensemble de puissances, car il représente le sous-ensemble vide.
Si vous préférez ne pas avoir le sous-ensemble vide tuple dans les résultats, vous pouvez modifier la plage dans la boucle des combinaisons comme suit :
def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
Cela exclura le tuple vide des sous-ensembles renvoyés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!