2016-12-12 1 views
0

Je veux être en mesure de classer seulement une partie d'une liste et ignorer certains éléments de cette liste. Je veux ignorer les éléments qui sont -999 et classer les éléments qui ne sont pas élevés à bas.Python Classement seulement une partie d'une liste

Par exemple:

test_cut = [0.18677649597722776, 0.21992417009282958, 0.21001370207789635, -999, -999, -999] 

Je veux obtenir un résultat de [3,1,2,0,0,0]

Mais si je fais cela, il classera les -999 aussi, que je veux avoir une valeur de 0 à la place.

[sorted(test_cut, reverse=True).index(i) + 1 for i in test_cut] 

sortie:

[3, 1, 2, 4, 4, 4] 

Répondre

0

Vous pouvez mettre une instruction conditionnelle à l'intérieur de votre compréhension de la liste, comme ce qui suit:

[sorted(test_cut, reverse=True).index(i) + 1 if i != -999 else 0 for i in test_cut] 
+0

Merci beaucoup Aza, aurait dû être en mesure de figure ça, je suis fatigué. lol. – WhitneyChia

+0

Vous pariez. Veuillez marquer la réponse comme acceptée, si cela vous a aidé. –