Bir geçtiğinizde lambdaiç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 xbundan az olup olmadığını y0 ise, xisimli için eşit yise ve 1 xdaha büyüktür y.
Tabii ki, bunun yerine keyparametreyi kullanabilirsiniz :
xs.sort(key=lambda s: len(s))
Bu, sortyö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, lendoğ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