Obtenha o produto cartesiano em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Obtenha o produto cartesiano em Python usando o módulo itertools
  2. Obtenha o produto cartesiano em Python usando o método de compreensão de lista
  3. Obtenha o produto cartesiano em Python usando o método iterativo
Obtenha o produto cartesiano em Python

Neste tutorial, aprenderemos diferentes métodos para obter o produto cartesiano de uma lista em Python. O produto cartesiano de dois conjuntos será um conjunto de todos os pares ordenados possíveis com o primeiro elemento de cada par ordenado do primeiro conjunto e o segundo elemento do segundo conjunto.

Podemos encontrar o produto cartesiano de conjuntos salvos como uma lista 2D usando os seguintes métodos em Python.

Obtenha o produto cartesiano em Python usando o módulo itertools

O método product(*iterables, repeat=1) do módulo itertools leva iterables como entrada e retorna seu produto cartesiano como saída. A ordem cartesiana do produto será a ordem de cada conjunto / lista no argumento fornecido iterables. O argumento opcional de palavra-chave repeat representa o número de vezes que queremos repetir o produto com a entrada iterables. E o * é usado para descompactar o argumento iterables.

O código de exemplo abaixo demonstra como obter o produto cartesiano em Python usando o método itertools.product().

from itertools import product

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

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

Produção:

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

Obtenha o produto cartesiano em Python usando o método de compreensão de lista

Podemos usar o método de compreensão de lista para obter o produto cartesiano das listas se o número total das listas for conhecido.

Se sabemos que o número de listas ou o número de listas é fixo, teremos que iterar por cada elemento da lista usando o loop for para obter seu produto cartesiano.

O código de exemplo a seguir demonstra como usar o método de compreensão de lista em Python para obter o produto cartesiano da lista.

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

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

Produção:

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

Obtenha o produto cartesiano em Python usando o método iterativo

Outra maneira de obter o produto cartesiano em Python é usar a abordagem de loop for iterativa. É uma abordagem melhor do que a compreensão de lista que usamos acima, pois neste método não precisamos nos preocupar com o número de listas ou conjuntos para o produto cartesiano.

Portanto, em vez de acessar cada elemento de cada lista, usamos uma abordagem iterativa. O código de exemplo a seguir demonstra como encontrar o produto cartesiano em Python usando o 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))

Produção:

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