Obtenir toutes les combinaisons possibles à partir d'une liste de nombres
La tâche consiste à obtenir toutes les combinaisons possibles (2 ^ N) des éléments d'une liste , quelle que soit leur longueur.
Brute-Force Approche
Une approche possible consiste à parcourir les entiers décimaux 1 à 32768 et à utiliser leurs représentations binaires comme filtres pour sélectionner les éléments de liste correspondants. Cependant, cette méthode a une complexité temporelle de O(32768), ce qui peut être inefficace pour les grandes listes.
Solution optimisée
Une solution plus efficace consiste à utiliser le bibliothèque itertools. Le code suivant génère toutes les combinaisons possibles des éléments de la liste en Python :
import itertools stuff = [1, 2, 3] combinations = list(itertools.chain(*map(lambda x: itertools.combinations(stuff, x), range(0, len(stuff)+1)))) for subset in combinations: print(subset)
Ce code génère tous les sous-ensembles de la liste donnée, y compris l'ensemble vide et la liste d'origine elle-même. Pour ce faire, il crée un générateur qui génère toutes les combinaisons possibles pour chaque longueur "L", puis utilise la fonction chain() pour concaténer tous les générateurs en un seul itérable.
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!