Maison >développement back-end >Tutoriel Python >Comment puis-je générer efficacement des produits cartésiens de plusieurs listes en Python ?

Comment puis-je générer efficacement des produits cartésiens de plusieurs listes en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 16:55:21114parcourir

How Can I Efficiently Generate Cartesian Products of Multiple Lists in Python?

Générer des produits cartésiens à partir de plusieurs listes

Obtenir le produit cartésien de plusieurs listes, où chaque combinaison possible de valeurs est produite, est une opération courante tâche en programmation. En utilisant itertools.product, un puissant module Python disponible depuis Python 2.6, vous pouvez atteindre cet objectif sans effort.

Pour utiliser itertools.product, fournissez simplement les listes que vous souhaitez combiner comme arguments. Par exemple, étant donné l'ensemble de listes suivant :

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]

Vous pouvez obtenir le produit cartésien comme suit :

import itertools

for element in itertools.product(*somelists):
    print(element)

Ce code génère efficacement toutes les combinaisons possibles de valeurs à partir des listes d'entrée . Le résultat serait :

(1, 'a', 4)
(1, 'a', 5)
(1, 'b', 4)
(1, 'b', 5)
(2, 'a', 4)
(2, 'a', 5)
...

Alternativement, si les listes étaient explicitement transmises en tant qu'arguments séparés, le code ressemblerait à ceci :

for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]):
    print(element)

En utilisant la flexibilité de itertools.product , vous pouvez facilement gérer les cas complexes où les données d'entrée sont constituées de listes imbriquées ou de listes de longueurs variables.

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