Bir geçtiğinizde lambda
için sort
, bir tamsayı değil, bir boolean dönmek gerekir. Dolayısıyla kodunuz bunun yerine aşağıdaki gibi olmalıdır:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Not bu cmp yerleşik bir fonksiyonu olacağı şekilde cmp(x, y)
döner takdirde -1 x
bundan az olup olmadığını y
0 ise, x
isimli için eşit y
ise ve 1 x
daha büyüktür y
.
Tabii ki, bunun yerine key
parametreyi kullanabilirsiniz :
xs.sort(key=lambda s: len(s))
Bu, sort
yönteme, anahtar işlevin döndürdüğü şeye göre sıralama yapmasını söyler .
DÜZENLEME: Aşağıdaki balpha ve Ruslan sayesinde, len
doğrudan işleve anahtar parametre olarak doğrudan geçebileceğinizi , böylece a ihtiyacını ortadan kaldırabileceğinizi belirttikleri için lambda
:
xs.sort(key=len)
Ve Ruslan'ın aşağıda işaret ettiği gibi, mevcut olanı yerinde sıralamak yerine yeni bir liste oluşturan yöntem yerine yerleşik sıralanmış işlevi de kullanabilirsiniz list.sort
:
print(sorted(xs, key=len))
lambda
; sadece kullankey = len