Pergunta

Dada uma lista de, por exemplodois elementos l = [1,0] Preciso criar todas as variações possíveis de 5 elementos com repetições.Eu tentei itertools.combinations, mas me dê o que eu queria.

Com n = 2 e k = 5 fornecidos, devo obter os elementos 2^5 = 32 e o resultado deve ser semelhante a este:

results = [11111,11110,11101,11100,11001,11011,11010,...00000]
Foi útil?

Solução

>>> import itertools
>>> ["".join(item) for item in itertools.product("10", repeat=5)]
['11111', '11110', '11101', '11100', '11011', '11010', '11001', '11000', '10111', 
'10110', '10101', '10100', '10011', '10010', '10001', '10000', '01111', '01110', 
'01101', '01100', '01011', '01010', '01001', '01000', '00111', '00110', '00101', 
'00100', '00011', '00010', '00001', '00000']

Outras dicas

Isso é equivalente a fazer um loop em 0..k ^ n-1 e gerar o índice atual na base n.O que reduz seu problema à conversão de base (que é essencialmente equivalente à divisão longa).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top