2017-10-19 12 views
0

J'ai la liste suivante en Python qui comprend 0s. J'aimerais créer une liste qui comprend des listes de différentes combinaisons de 1 et de 0. Chaque liste serait une combinaison nouvelle et unique et, ensemble, toutes les combinaisons possibles peuvent y être trouvées. Il ressemblerait un peu à ceci, si c'était seulement avec 3 articles:Python retourne une liste de listes de combinaisons de séquences

lst = [[0,0,0], [0,0,1], [0,1,0], [1,0,0], [0,1,1], [1,1,0], [1,0,1], [1,1,1]] 

Merci!

+0

Avez-vous un [ exemple] (https://stackoverflow.com/help/mcve) de ce que vous avez fait et une explication de ce qui ne fonctionne pas? –

+0

Donner un exemple en commençant par [0, 0, 0] et détailler chaque sortie, sinon personne ne peut savoir ce que vous voulez. –

Répondre

1

Vous pouvez utiliser le package itertools, il contient la fonction product

from itertools import product 
list(product([0,1],repeat=5)) 

voir https://docs.python.org/3/library/itertools.html#itertools.product

modifier: Notez que l'utilisation correcte de certaines fonctions de ce paquet pourrait vous donner votre prévu sortie sans faire de boucles. Comme d'autres l'ont dit, il est difficile de savoir ce que vous voulez exactement.

0

Je ne suis pas sûr de ce que vous voulez, mais ce qui suit ressemble à votre besoin.

import numpy as np 

lst = [0,0,0,0,0] 

tmp = [] 
for i in range(len(lst)): 
    l = np.copy(lst) 
    l[i] = 1 
    tmp.append(l.tolist()) 
print(tmp) 

[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]] 
0

Trois combinaisons de bits sans paquets d'importation:

lst = [] 
z = [lst.append(list(format(i,'03b'))) for i in range(0,2**3)] 
lst 
[['0', '0', '0'], ['0', '0', '1'], ['0', '1', '0'], ['0', '1', '1'], ['1', '0', '0'], ['1', '0', '1'], ['1', '1', '0'], ['1', '1', '1']] 

Pour 4 bits de large, le changement '03b' à '04b' et portée à (0,2 ** 4)