Когда вы передаете lambda
в sort
, вам нужно вернуть целое число, а не логическое значение. Поэтому ваш код должен выглядеть следующим образом:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Обратите внимание, что cmp - это встроенная функция, которая cmp(x, y)
возвращает -1, если x
меньше y
, 0, если x
равно y
, и 1, если x
больше y
.
Конечно, вы можете вместо этого использовать key
параметр:
xs.sort(key=lambda s: len(s))
Это говорит sort
методу о порядке на основе того, что возвращает функция ключа.
РЕДАКТИРОВАТЬ: Спасибо balpha и Руслану ниже за то, что они указали, что вы можете просто передать len
напрямую в качестве ключевого параметра функции, тем самым устраняя необходимость в lambda
:
xs.sort(key=len)
И, как Руслан указывает ниже, вы также можете использовать встроенную функцию сортировки, а не list.sort
метод, который создает новый список, а не сортирует существующий на месте:
print(sorted(xs, key=len))
lambda
; просто используйтеkey = len