Wenn Sie ein lambdaan übergeben sort, müssen Sie eine Ganzzahl und keinen Booleschen Wert zurückgeben. Ihr Code sollte also stattdessen wie folgt lauten:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Beachten Sie, dass cmp eine integrierte Funktion ist, cmp(x, y)die -1 zurückgibt, wenn sie xkleiner als ist y, 0, wenn sie xgleich ist y, und 1, wenn sie xgrößer als ist y.
Natürlich können Sie stattdessen den keyParameter verwenden:
xs.sort(key=lambda s: len(s))
Dies weist die sortMethode an, basierend auf dem, was die Schlüsselfunktion zurückgibt, zu bestellen.
BEARBEITEN: Vielen Dank an balpha und Ruslan unten für den Hinweis, dass Sie lendirekt als Schlüsselparameter an die Funktion übergeben können, wodurch die Notwendigkeit eines lambda:
xs.sort(key=len)
Und wie Ruslan unten weist darauf hin, können Sie auch die eingebauten in sortierten Funktion anstelle der list.sortMethode, die eher eine neue Liste erstellt als die Sortierung der vorhandenen in-place:
print(sorted(xs, key=len))
lambda; benutze einfachkey = len