un problème d'un mon programme ?

un problème d'un mon programme ? - Python - Programmation

Marsh Posté le 27-10-2014 à 17:47:05    

Bonjour à tous,
Il doit y avoir un problème dans mon programme. Je voudrais rajouter des listes à ma liste. je m'explique :  
J'aimerais faire une liste comme celle ci : [[0], [1], [1, 0], [1, 1], [1, 0, 0]], seulement, cela ne fait pas ce que je veux. voici mon programme:  
 
def parcours(n):
    A = [0]
    L=[A]
    print([A])
    for i in range(1,2**n):
        A=plus1(A)
        L.append([A])
        print([A])
    return L

 
Les print(A) n'ont aucune utilité ici, ils me permetttent de savoir ce que j'ai en fin de boucle. Il se trouve que j'ai ce qu'il faut, c'est à dire :  
[0]  
[1]
[1, 0]
[1, 1]
[1, 0, 0]
mais je n'arrive pas à les assembler.le programme m'affiche :  
[[0], [[0]], [[0, 0]], [[0, 0]], [[1, 0, 0]]]
que faire ?

Reply

Marsh Posté le 27-10-2014 à 17:47:05   

Reply

Marsh Posté le 27-10-2014 à 17:49:52    

j'ai oublié de dire que :  
0base10=0en base 2
1base10=[1]
2base10=[1, 0]
et plus1 me permet de rajouter 1 à [0], pour avoir 1,  
autrement dit, il me permet d'avoir n en base 2, à partir de n-1 en base 2

Reply

Marsh Posté le 27-10-2014 à 20:39:33    

Il y a pas une erreur dans ton exemple ?  
 
C'est pas plutôt [[0], [1], [1, 0], [1, 1], [1, 1, 0]] que tu veux ? (Bref une suite de pseudo binaire ?) Car sinon je comprend pas la logique ?
Si c'est ca il y a moyen de truander en castant en liste une valeur binaire et en enlevant les 2 1ers caractères.
 
Exemple:

Code :
  1. >>> bin(3)
  2. '0b11'
  3. >>> list(bin(3))
  4. ['0', 'b', '1', '1']
  5. >>> list(bin(3))[2:]
  6. ['1', '1']


 
Du coup simplement dans une liste en compréhension:

Code :
  1. >>> [list(bin(i))[2:] for i in range(0,2**4)]
  2. [['0'], ['1'], ['1', '0'], ['1', '1'], ['1', '0', '0'], ['1', '0', '1'], ['1', '1', '0'], ['1', '1', '1'], ['1', '0', '0', '0'], ['1', '0', '0', '1'], ['1', '0', '1', '0'], ['1', '0', '1', '1'], ['1', '1', '0', '0'], ['1', '1', '0', '1'], ['1', '1', '1', '0'], ['1', '1', '1', '1']]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed