Obtenir un produit cartésien en Python

Muhammad Waiz Khan 30 janvier 2023
  1. Obtenir un produit cartésien en Python à l’aide du module itertools
  2. Obtenir un produit cartésien en Python à l’aide de la méthode de compréhension de liste
  3. Obtenir un produit cartésien en Python à l’aide de la méthode itérative
Obtenir un produit cartésien en Python

Dans ce tutoriel, nous allons apprendre différentes méthodes pour obtenir le produit cartésien d’une liste en Python. Le produit cartésien de deux ensembles sera un ensemble de toutes les paires ordonnées possibles avec le premier élément de chaque paire ordonnée du premier ensemble et le deuxième élément du deuxième ensemble.

Nous pouvons trouver le produit cartésien des ensembles enregistrés sous forme de liste 2D en utilisant les méthodes suivantes en Python.

Obtenir un produit cartésien en Python à l’aide du module itertools

La méthode product(*iterables, repeat=1) du module itertools prend iterables en entrée et renvoie leur produit cartésien en sortie. L’ordre cartésien des produits sera l’ordre de chaque ensemble/liste dans l’argument fourni itérables. L’argument mot-clé optionnel repeat représente le nombre de fois que nous voulons répéter le produit avec l’entrée iterables. Et le * est utilisé pour décompresser l’argument iterables.

L’exemple de code ci-dessous montre comment obtenir le produit cartésien en Python à l’aide de la méthode itertools.product().

from itertools import product

mylists = [["a", "b"], [1, 2]]

for elem in product(*mylists):
    print(elem)

Production:

('a', 1)
('a', 2)
('b', 1)
('b', 2)

Obtenir un produit cartésien en Python à l’aide de la méthode de compréhension de liste

Nous pouvons utiliser la méthode de compréhension de liste pour obtenir le produit cartésien des listes si le nombre total de listes est connu.

Si nous savons que le nombre de listes ou le nombre de listes est fixe, nous devrons parcourir chaque élément de liste en utilisant la boucle for pour obtenir leur produit cartésien.

L’exemple de code ci-dessous montre comment utiliser la méthode de compréhension de liste en Python pour obtenir le produit cartésien de la liste.

mylists = [["a", "b"], [1, 2]]

crt_prd = [(x, y) for x in mylists[0] for y in mylists[1]]
print(crt_prd)

Production:

[('a', 1), ('a', 2), ('b', 1), ('b', 2)]

Obtenir un produit cartésien en Python à l’aide de la méthode itérative

Une autre façon d’obtenir le produit cartésien en Python consiste à utiliser l’approche de boucle itérative for. C’est une meilleure approche que la compréhension de liste que nous avons utilisée ci-dessus, car dans cette méthode, nous n’avons pas à nous soucier du nombre de listes ou d’ensembles pour le produit cartésien.

Par conséquent, au lieu d’accéder à chaque élément de chaque liste, nous utilisons une approche itérative. L’exemple de code ci-dessous montre comment trouver le produit cartésien en Python à l’aide de la méthode itérative.

def get_cart_prd(pools):
    result = [[]]
    for pool in pools:
        result = [x + [y] for x in result for y in pool]
    return result


mylists = [["a", "b"], [1, 2, 3]]
print(get_cart_prd(mylists))

Production:

[['a', 1], ['a', 2], ['a', 3], ['b', 1], ['b', 2], ['b', 3]]