2017-10-15 5 views
1

J'ai besoin d'aide avec python. (et s'il vous plaît excusez mon anglais) J'ai un ordre de liste: de [0,1,2,3,4,5] à [5,4,3,2,1,0] (c'est une sorte d'alphabétique commander avec les "lettres" 0, 1, 2, 3, 4 et 5). Par exemple ce qui suit [0,1,2,3,4,5] est [0,1,2,3,5,4], alors c'est [0,1,2,4,3,5] et ça va sur. Attention, vous devez utiliser chaque lettre une fois pour former une liste.Python, ordre et liste

Et fondamentalement mon programme me donne une liste telle que [1,5,0,3,4,2] et je voudrais avoir le numéro correspondant dans ma commande. Découvrez-le et je vous sauverai ma journée! Merci :)

+0

Essayez 'shuffle' pour le remaniement sur place d'une liste – tuned

Répondre

0

Je pense que vous avez permutations et besoin du index:

>>> from itertools import permutations 
>>> L = list(permutations(range(6),6)) # Generate the list 
>>> len(L) 
720 
>>> L[0]   # First item 
(0, 1, 2, 3, 4, 5) 
>>> L[-1]   # Last item 
(5, 4, 3, 2, 1, 0) 
>>> L.index((0,1,2,3,4,5)) # Find a sequence 
0 
>>> L.index((5,4,3,2,1,0)) 
719 
>>> L.index((1,5,0,3,4,2)) 
219 

Notez la liste comme générée est une liste de tuples, pas la liste des listes. Si vous voulez une liste de listes:

>>> L = [list(x) for x in permutations(range(6),6)] 
>>> L.index([1,5,0,3,4,2]) 
219