Générer tous les sous-ensembles de taille k (contenant k éléments) en Python
J'ai un ensemble de valeurs et souhaitez créer une liste de tous les sous-ensembles contenant 2 éléments.
Par exemple, une source de ([1,2,3])
a la suite de 2-élément sous-ensembles:
set([1,2]), set([1,3]), set([2,3])
Est-il un moyen de le faire en python?
source d'informationauteur John Manak
Vous devez vous connecter pour publier un commentaire.
Semble que vous voulez
itertools.combinations
:Si vous voulez vous devrez les convertir explicitement.
C'est un sous-ensemble de la la puissance du de
{1, 2, 3}
(ou autre jeu) contenant tous les deux ensembles d'éléments.Voir le Python
itertools
de la documentation et de recherche sur le terme "powerset" pour une réponse globale à ce problème.Juste pour donner un autre point de vue, j'ai cherché un moyen pour parcourir tous les sous-ensemble de taille 2 de
{1.....N}
j'ai donc misitertools.combinations
en test:Donc je suppose qu'il ne faut pas toujours tourner dans la solution générale.... Si vous savez à l'avance la taille du sous-ensemble que vous voulez, il devrait être plus efficace pour effectuer une itération à l'aide de boucles.
Notez également que vous ne devriez pas effectuer une itération sur
list(itertools.combinations(lst, 2))
depuis ce mouvement crée la liste (et beaucoup plus lent que d'utiliser le générateur lui-même).