Programa Python para aplicar itertools.product a elementos de uma lista de listas
O itertools é um módulo da biblioteca padrão do Python que fornece uma coleção de ferramentas para iteração eficiente e combinação de iteráveis e, como faz parte da biblioteca padrão do Python, não há necessidade de realizar nenhuma instalação adicional. Ele oferece várias funções que podem ser usadas para manipular, combinar e iterar iteráveis de diferentes maneiras.
A função itertools.product() está relacionada ao módulo itertools, que é uma ferramenta poderosa para gerar o produto cartesiano de múltiplos iteráveis. Ele recebe um ou mais iteráveis como entrada e retorna um iterador que produz tuplas representando todas as combinações possíveis dos elementos dos iteráveis de entrada.
O itertools.product retorna um iterador; em outras palavras, ele gera as tuplas dinamicamente conforme são solicitadas. Isso economiza memória, especialmente ao lidar com grandes iteráveis de entrada ou quando o número de combinações é enorme.
Sintaxe
A sintaxe para usar a função itertools.product() é a seguinte –
itertools.product(*iterables, repeat=1)
Onde,
-
iteráveis são um ou mais elementos combinados para gerar o produto cartesiano.
repetir é um valor inteiro que especifica o número de vezes que cada elemento nos iteráveis de entrada deve ser repetido.
Exemplo
Neste exemplo, estamos usando itertools.product() para gerar todas as combinações possíveis de cores e tamanhos. O produto iterador resultante contém tuplas representando cada combinação e iteramos sobre ele para imprimir cada tupla.
import itertools
colors = ['red', 'green', 'blue']
sizes = ['S', 'M', 'L']
product = itertools.product(colors, sizes)
for item in product:
print(item)
Saída
('red', 'S')
('red', 'M')
('red', 'L')
('green', 'S')
('green', 'M')
('green', 'L')
('blue', 'S')
('blue', 'M')
('blue', 'L')
Exemplo
Neste exemplo, estamos tentando calcular o produto cartesiano das listas de letras e números usando a função itertools.product() e o iterador resultante gera tuplas com todas as combinações possíveis de um elemento de letras e um elemento dos números. As tuplas são então impressas usando um loop.
import itertools
letters = ['a', 'b']
numbers = [1, 2, 3]
result = itertools.product(letters, numbers)
for item in result:
print(item)
Saída
('a', 1)
('a', 2)
('a', 3)
('b', 1)
('b', 2)
('b', 3)
Exemplo
No exemplo anterior calculamos o produto cartesiano de números e letras com a repetição de uma vez. Aqui neste exemplo, o parâmetro de repetição é definido como 3, o que faz com que o produto cartesiano seja repetido três vezes e o iterador resultante gere tuplas com todas as combinações possíveis de três elementos da lista de números, incluindo repetições.
import itertools
letters = ['a', 'b']
numbers = [1, 2, 3]
result = itertools.product(letters, numbers, repeat = 2)
for item in result:
print(item)
Saída
('a', 1, 'a', 1)
('a', 1, 'a', 2)
('a', 1, 'a', 3)
('a', 1, 'b', 1)
('a', 1, 'b', 2)
('a', 1, 'b', 3)
('a', 2, 'a', 1)
('a', 2, 'a', 2)
('a', 2, 'a', 3)
('a', 2, 'b', 1)
('a', 2, 'b', 2)
('a', 2, 'b', 3)
('a', 3, 'a', 1)
('a', 3, 'a', 2)
('a', 3, 'a', 3)
('a', 3, 'b', 1)
('a', 3, 'b', 2)
('a', 3, 'b', 3)
('b', 1, 'a', 1)
('b', 1, 'a', 2)
('b', 1, 'a', 3)
('b', 1, 'b', 1)
('b', 1, 'b', 2)
('b', 1, 'b', 3)
('b', 2, 'a', 1)
('b', 2, 'a', 2)
('b', 2, 'a', 3)
('b', 2, 'b', 1)
('b', 2, 'b', 2)
('b', 2, 'b', 3)
('b', 3, 'a', 1)
('b', 3, 'a', 2)
('b', 3, 'a', 3)
('b', 3, 'b', 1)
('b', 3, 'b', 2)
('b', 3, 'b', 3)