Les variations avec répétition
-
27-10-2019 - |
Question
Étant donné une liste de par exemple deux éléments l = [1,0]
Je dois créer toutes les variantes 5 éléments possibles avec répétitions. J'ai essayé itertools.combinations mais donnez-moi ce que je voulais.
Avec n = 2
donné et je k = 5
obtenir des éléments de 2^5 = 32
et le résultat devrait ressembler à ceci:
results = [11111,11110,11101,11100,11001,11011,11010,...00000]
La solution
>>> 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']
Autres conseils
Ceci est équivalent à boucler sur 0..k ^ n-1 et délivrer en sortie l'index courant dans la base n. Ce qui réduit votre problème à la conversion de base (qui est essentiellement équivalente à la longue division).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow