Maison > développement back-end > Tutoriel Python > Comment puis-je calculer efficacement le produit cartésien des listes en Python ?

Comment puis-je calculer efficacement le produit cartésien des listes en Python ?

Linda Hamilton
Libérer: 2024-12-29 12:09:11
original
205 Les gens l'ont consulté

How Can I Efficiently Compute the Cartesian Product of Lists in Python?

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]
]
Copier après la connexion

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), ...]
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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!

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