Obtener producto cartesiano en Python

Muhammad Waiz Khan 30 enero 2023
  1. Obtenga un producto cartesiano en Python usando el módulo itertools
  2. Obtenga un producto cartesiano en Python usando el método de comprensión de listas
  3. Obtenga un producto cartesiano en Python usando el método iterativo
Obtener producto cartesiano en Python

En este tutorial, aprenderemos diferentes métodos para obtener el producto cartesiano de una lista en Python. El producto cartesiano de dos conjuntos será un conjunto de todos los pares ordenados posibles con el primer elemento de cada par ordenado del primer conjunto y el segundo elemento del segundo conjunto.

Podemos encontrar el producto cartesiano de conjuntos guardados como una lista 2D utilizando los siguientes métodos en Python.

Obtenga un producto cartesiano en Python usando el módulo itertools

El método product(*iterables, repeat=1) del módulo itertools toma iterables como entrada y devuelve su producto cartesiano como salida. El orden de producto cartesiano será el orden de cada conjunto / lista en el argumento proporcionado iterables. El argumento de palabra clave opcional repeat representa el número de veces que queremos repetir el producto con la entrada iterables. Y el * se utiliza para descomprimir el argumento iterables.

El siguiente código de ejemplo demuestra cómo obtener el producto cartesiano en Python utilizando el método itertools.product().

from itertools import product

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

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

Producción :

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

Obtenga un producto cartesiano en Python usando el método de comprensión de listas

Podemos usar el método de comprensión de listas para obtener el producto cartesiano de las listas si se conoce el número total de listas.

Si sabemos que el número de listas o que el número de listas es fijo, tendremos que iterar a través de cada elemento de la lista usando el bucle for para obtener su producto cartesiano.

El siguiente código de ejemplo demuestra cómo usar el método de comprensión de listas en Python para obtener el producto cartesiano de la lista.

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

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

Producción :

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

Obtenga un producto cartesiano en Python usando el método iterativo

Otra forma de obtener el producto cartesiano en Python es utilizar el enfoque iterativo de bucle for. Es un enfoque mejor que la comprensión de listas que usamos anteriormente, ya que en este método, no tenemos que preocuparnos por la cantidad de listas o conjuntos para el producto cartesiano.

Por lo tanto, en lugar de acceder a cada elemento de cada lista, utilizamos un enfoque iterativo. El siguiente código de ejemplo demuestra cómo encontrar el producto cartesiano en Python utilizando el método iterativo.

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))

Producción :

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