Lorsque vous passez un lambdaà sort, vous devez renvoyer un entier et non un booléen. Donc, votre code devrait plutôt se lire comme suit:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Notez que cmp est une fonction intégrée telle que cmp(x, y)renvoie -1 si xest inférieur à y, 0 si xest égal à yet 1 si xest supérieur à y.
Bien sûr, vous pouvez utiliser à la place le keyparamètre:
xs.sort(key=lambda s: len(s))
Cela indique à la sortméthode de commander en fonction de ce que la fonction clé renvoie.
EDIT: Merci à balpha et Ruslan ci-dessous pour avoir souligné que vous pouvez simplement passer lendirectement comme paramètre clé à la fonction, éliminant ainsi le besoin d'un lambda:
xs.sort(key=len)
Et comme Ruslan le souligne ci-dessous, vous pouvez également utiliser la fonction triée intégrée plutôt que la list.sortméthode, qui crée une nouvelle liste plutôt que de trier l'existante sur place:
print(sorted(xs, key=len))
               
              
lambda; il suffit d'utiliserkey = len