Quando você passa um lambda
to sort
, você precisa retornar um inteiro, não um booleano. Portanto, seu código deve ser o seguinte:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Observe que cmp é uma função embutida que cmp(x, y)
retorna -1 se x
for menor que y
, 0 se x
for igual a y
e 1 se x
for maior quey
.
Claro, você pode usar o key
parâmetro:
xs.sort(key=lambda s: len(s))
Isso diz ao sort
método para fazer o pedido com base no que quer que a função da tecla retorne.
EDITAR: Obrigado a balpha e Ruslan abaixo por apontar que você pode simplesmente passar len
diretamente como o parâmetro chave para a função, eliminando assim a necessidade de lambda
:
xs.sort(key=len)
E, como Ruslan aponta abaixo, você também pode usar a função de classificação integrada em vez do list.sort
método, que cria uma nova lista em vez de classificar a existente no local:
print(sorted(xs, key=len))
lambda
; apenas usekey = len