Maison >développement back-end >Tutoriel Python >Comment puis-je générer tous les sous-ensembles d'un ensemble (Powerset) à l'aide de Python ?

Comment puis-je générer tous les sous-ensembles d'un ensemble (Powerset) à l'aide de Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-12 12:25:15583parcourir

How Can I Generate All Subsets of a Set (Powerset) Using Python?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn