Wenn Sie ein lambda
an ü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 x
kleiner als ist y
, 0, wenn sie x
gleich ist y
, und 1, wenn sie x
größer als ist y
.
Natürlich können Sie stattdessen den key
Parameter verwenden:
xs.sort(key=lambda s: len(s))
Dies weist die sort
Methode 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 len
direkt 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.sort
Methode, die eher eine neue Liste erstellt als die Sortierung der vorhandenen in-place:
print(sorted(xs, key=len))
lambda
; benutze einfachkey = len