Génération de tous les sous-ensembles d'un ensemble (Powerset)
Considérons un ensemble {0, 1, 2, 3}. Comment pouvons-nous obtenir tous les sous-ensembles possibles de cet ensemble, appelés son ensemble de puissances ?
Une approche efficace consiste à exploiter le module itertools de Python, qui fournit une recette pratique pour cette tâche.
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))
Lors de l'exécution de powerset([1,2,3]), nous obtenons le résultat suivant :
>>> list(powerset([1,2,3])) [(), (1,), (2,), (3,), (1,2), (1,3), (2,3), (1,2,3)]
Le tuple vide étant supprimé, nous get:
>>> list(powerset([1,2,3]))[1:] [(1,), (2,), (3,), (1,2), (1,3), (2,3), (1,2,3)]
Pour adapter la sortie à vos besoins spécifiques, des ajustements à l'instruction range peuvent être effectués (par exemple, range(1, len(s) 1) pour exclure le tuple vide).
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!