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
391 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!

source:php.cn
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