2012-11-10 1 views
1

J'essaie de trier une liste de valeurs inconnues, ints ou floats ou les deux, dans l'ordre croissant. c'est-à-dire, [2, -1,1,0] deviendrait [-1,1,0,2]. Malheureusement, la fonction sorted() ne semble pas fonctionner car elle semble trier par ordre décroissant en valeur absolue. Des idées?Trier une liste d'ints et de flottants avec des valeurs négatives et positives?

+0

['trié ([2, -1,1.0])' donne '[-1, 1.0, 2]'] (http://ideone.com/j0937A). Quelle est ta question? – Johnsyweb

Répondre

1

J'ai eu le même problème. La réponse: Python va trier les nombres par la valeur absolue si vous les avez sous la forme de chaînes. Donc, en tant que votre clé, assurez-vous d'inclure un argument int() ou float(). Ma syntaxe de travail était

data = triées (données, key = lambda x: float (x [0]))

... la partie lambda x donne juste une fonction qui sort la chose que vous voulez trier par. Donc, il prend dans une rangée dans ma liste, trouve le flotteur 0e élément, et trie par cela.

+0

Pour développer votre réponse, la différence entre «2» et «2» est que l'un est un entier et l'autre est une chaîne. Le fait que la chaîne contienne des chiffres ne change pas la façon dont elle est triée car les chaînes sont triées lexicographiquement (comme dans un dictionnaire), donc ''-2' <'-5'' (parce que'' - '==' - ' 'et' '2' <'5''). Les entiers, d'autre part, sont triés par valeur. – Blender

Questions connexes