Wenn Sie eine lambda
a sort
müssen Sie eine ganze Zahl zurückgeben, keinen booleschen Wert. Ihr Code sollte also stattdessen wie folgt lauten:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Beachten Sie, dass cmp ist eine eingebaute Funktion, die so beschaffen ist, dass cmp(x, y)
gibt -1 zurück, wenn x
ist kleiner als y
0, wenn x
ist gleich y
und 1, wenn x
größer ist als y
.
Natürlich können Sie stattdessen auch die key
Parameter:
xs.sort(key=lambda s: len(s))
Dies sagt dem sort
Methode, um auf der Grundlage der von der Schlüsselfunktion zurückgegebenen Daten zu sortieren.
EDIT: Dank an balpha und Ruslan unten für den Hinweis, dass man einfach passieren kann len
direkt als Schlüsselparameter in die Funktion ein, so dass die Notwendigkeit einer lambda
:
xs.sort(key=len)
Und wie Ruslan weiter unten ausführt, können Sie auch die integrierte sortiert Funktion statt der Funktion list.sort
Methode, die eine neue Liste erstellt, anstatt die vorhandene Liste direkt zu sortieren:
print(sorted(xs, key=len))