Maison > développement back-end > Tutoriel Python > Comment puis-je générer efficacement tous les sous-ensembles possibles d'une liste en Python ?

Comment puis-je générer efficacement tous les sous-ensembles possibles d'une liste en Python ?

Susan Sarandon
Libérer: 2024-12-25 10:41:15
original
154 Les gens l'ont consulté

How Can I Efficiently Generate All Possible Subsets of a List in Python?

Génération de combinaisons exhaustives : des sous-ensembles à 1 élément à toutes les possibilités

Le problème de la génération de toutes les combinaisons possibles d'éléments dans une liste a déconcerté de nombreux programmeurs. Avec des méthodes comme itertools.combinations(), vous pouvez facilement récupérer des sous-ensembles d'une longueur spécifique. Mais que se passe-t-il si vous souhaitez parcourir toutes les tailles de sous-ensembles possibles, des combinaisons à 1 élément à l'ensemble entier ?

En effet, la représentation binaire d'un entier offre une approche, mais découvrons une méthode plus efficace.

Présentation de la puissante fonction itertools.chain(), qui combine de manière transparente une série d'itérateurs en un seul itérateur étendu. Cela nous permet de générer une chaîne de générateurs qui produisent des sous-ensembles de toutes les longueurs possibles.

Voici une implémentation concise utilisant itertools.chain() et combinaisons() :

from itertools import chain, combinations

def all_subsets(ss):
    return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1)))
Copier après la connexion

Pas besoin de travailler dur avec une indexation complexe ou un décodage binaire. Invoquez simplement all_subsets() sur votre liste et elle renverra sans effort une chaîne de tuples représentant toutes les combinaisons d'éléments possibles.

Par exemple, considérez la liste [1, 2, 3]. Notre code donne :

()
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)
Copier après la connexion

Couvrant toutes les bases, des sous-ensembles vides à l'ensemble complet, cette approche polyvalente résout avec élégance le problème de l'énumération de toutes les combinaisons possibles des éléments d'une liste.

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