Comment puis-je trouver tous les sous-ensembles d'un ensemble, avec exactement n éléments?

Je suis en train d'écrire un programme en Python, et j'ai réalisé qu'un problème j'ai besoin pour résoudre exige de moi, étant donné un ensemble S avec n éléments (|S|=n), pour tester une fonction sur tous les sous-ensembles possibles d'un certain ordre m (c'est à dire avec m nombre d'éléments). Pour utiliser la réponse à produire une solution partielle, et puis essayez à nouveau avec la commande suivante m=m+1, jusqu'à ce que m=n.

Je suis sur ma façon d'écrire une solution de la forme:

def findsubsets(S, m):
    subsets = set([])
    ...
    return subsets

Mais sachant Python je m'attendais à une solution pour être déjà là.

Quelle est la meilleure façon d'accomplir cette?

  • scipy.misc.comb(S, m) donne le nombre de sous-ensembles que vous obtiendrez. Vous devriez vérifier avant de vous exécuter votre code comme le nombre de m-taille des sous-ensembles de S devient très grand, très rapide.
  • Littéralement eu le même problème, mis à code moi-même, et alors rendu compte qu'il doit exister une bibliothèque Python pour cela!