Lorsque vous passez une lambda
de sort
, vous avez besoin de retourner un entier, pas un booléen. Ainsi, votre code devrait plutôt lire
xs.sort(lambda x,y: cmp(len(x), len(y))
Notez que le cpm est un builtin fonction telle que cmp(x, y)
retourne -1 si x
est inférieure à y
, 0 x
est égal à y
, et 1 cas x
est plus grand que y
.
Bien sûr, vous pouvez à la place utiliser l' key
paramètre:
xs.sort(key = lambda s: len(s))
Ceci dit l' sort
méthode de commande basé sur ce que la touche de fonction retourne.
EDIT: Merci à bl'alpha et Ruslan ci-dessous pour préciser que vous pouvez simplement transmettre len
répertoire que le paramètre clé, éliminant ainsi la nécessité d'un lambda
:
xs.sort(key = len)
Et comme Ruslan points ci-dessous, vous pouvez également utiliser le haut- triés en fonction plutôt que de l' list.sort
méthode, qui crée une nouvelle liste plutôt que de tri de l'existant en place:
print sorted(xs, key=len)