Basicamente, estou procurando uma versão python da combinação deList<List<int>>
Dada uma lista de listas, preciso de uma nova lista que ofereça todas as combinações possíveis de itens entre as listas.
[[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]]
O número de listas é desconhecido, por isso preciso de algo que funcione para todos os casos. Pontos de bônus por elegância!
python
combinations
Lin
fonte
fonte
*a
?*a
significa que esses argumentos estão sendo passados para a função ou método.def fn(a,b,c):
respondeu àfn(*[1,2,3])
referênciaa
como entrada, itera sobreitertools.product(*a)
eyield
s a tupla produzida poritertools
e uma versão reversa ( por exemplo, crie uma listareverse()
e converta novamente em tupla). Melhor fazer uma nova pergunta.A solução mais elegante é usar itertools.product no python 2.6.
Se você não estiver usando o Python 2.6, os documentos para itertools.product realmente mostrarão uma função equivalente para fazer o produto da maneira "manual":
fonte
Espero que você ache isso tão elegante quanto eu quando o encontrei.
fonte
Numpy pode fazer isso:
fonte
Não há nada errado com a recursão direta para esta tarefa e, se você precisar de uma versão que funcione com cadeias, isso pode atender às suas necessidades:
fonte
Pode-se usar python base para isso. O código precisa de uma função para nivelar listas de listas:
Então pode-se executar:
Resultado:
fonte
Resultado:
fonte