Calcul du produit cartésien de listes
Obtenir le produit cartésien, ou toutes les combinaisons possibles de valeurs, à partir de plusieurs listes pose un défi courant dans programmation. Prenons l'exemple d'une liste de listes :
somelists = [ [1, 2, 3], ['a', 'b'], [4, 5] ]
Le résultat idéal :
Le résultat que nous recherchons est une liste unique contenant toutes les combinaisons possibles de valeurs du listes d'entrée :
[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5), ...]
La solution pythonique : itertools.product
La bibliothèque standard Python fournit un outil puissant pour cette tâche : itertools.product. Disponible depuis Python 2.6, cette fonction attend les séquences d'entrée sous forme d'arguments séparés.
import itertools for element in itertools.product(*somelists): print(element)
Alternativement, vous pouvez spécifier explicitement chaque séquence comme argument :
for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]): print(element)
itertools.product retournera un objet générateur qui produit chaque combinaison sous forme de tuple. Pour obtenir la liste souhaitée, vous pouvez parcourir le générateur et convertir chaque tuple en liste si nécessaire.
En utilisant itertools.product, vous pouvez calculer efficacement le produit cartésien de plusieurs listes, évitant ainsi le besoin de listes imbriquées. boucles et assurer une solution concise et lisible à ce défi de programmation commun.
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!