Maison > développement back-end > Tutoriel Python > Comment générer tous les sous-ensembles d'un ensemble à l'aide de « itertools.combinations » de Python ?

Comment générer tous les sous-ensembles d'un ensemble à l'aide de « itertools.combinations » de Python ?

Linda Hamilton
Libérer: 2024-12-11 13:52:12
original
476 Les gens l'ont consulté

How to Generate All Subsets of a Set Using Python's `itertools.combinations`?

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))
Copier après la connexion

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)]
Copier après la connexion

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))
Copier après la connexion

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!

Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal