Maison >développement back-end >Tutoriel Python >Comment générer efficacement toutes les combinaisons possibles à partir d'une liste de listes en Python ?

Comment générer efficacement toutes les combinaisons possibles à partir d'une liste de listes en Python ?

DDD
DDDoriginal
2024-12-10 11:58:14955parcourir

How can I efficiently generate all possible combinations from a list of lists in Python?

Combinaisons d'une liste de listes en Python

En programmation, combiner des éléments de plusieurs listes est une tâche courante. Cette question porte sur la génération de toutes les combinaisons possibles d'éléments à partir d'une liste de listes, quelle que soit sa taille.

Pour y parvenir, la bibliothèque Python propose une solution ingénieuse utilisant la fonction itertools.product. Cette fonction prend un nombre variable d'itérables en entrée et renvoie un produit cartésien, qui produit essentiellement toutes les combinaisons possibles d'éléments de chaque itérable.

Par exemple, considérons la liste de listes d'entrée : [[1,2 ,3],[4,5,6],[7,8,9,10]].

import itertools
a = [[1,2,3],[4,5,6],[7,8,9,10]]
combinations = list(itertools.product(*a))

La liste de combinaisons résultante contiendra toutes les combinaisons possibles des éléments de les listes d'entrée :

[(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 4, 10), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 5, 10),
(1, 6, 7), (1, 6, 8), (1, 6, 9), (1, 6, 10), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 4, 10),
(2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 5, 10), (2, 6, 7), (2, 6, 8), (2, 6, 9), (2, 6, 10),
(3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 4, 10), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 5, 10),
(3, 6, 7), (3, 6, 8), (3, 6, 9), (3, 6, 10)]

Grâce à la puissance d'itertools.product, générer des combinaisons à partir d'une liste de listes devient une opération concise et élégante en Python.

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