Obtenha o produto cartesiano em Python
-
Obtenha o produto cartesiano em Python usando o módulo
itertools
- Obtenha o produto cartesiano em Python usando o método de compreensão de lista
- Obtenha o produto cartesiano em Python usando o método iterativo
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]]