Saat Anda meneruskan lambda
ke sort
, Anda harus mengembalikan integer, bukan boolean. Jadi kode Anda seharusnya terbaca sebagai berikut:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Perhatikan bahwa cmp adalah fungsi bawaan yang cmp(x, y)
mengembalikan -1 jika x
kurang dari y
, 0 jika x
sama dengan y
, dan 1 jika x
lebih besar dari y
.
Tentu saja, Anda dapat menggunakan key
parameter:
xs.sort(key=lambda s: len(s))
Ini memberi tahu sort
metode untuk memesan berdasarkan apa pun yang dikembalikan oleh fungsi kunci.
EDIT: Terima kasih kepada balpha dan Ruslan di bawah ini karena telah menunjukkan bahwa Anda bisa len
langsung meneruskan sebagai parameter kunci ke fungsi, sehingga menghilangkan kebutuhan akan lambda
:
xs.sort(key=len)
Dan seperti yang ditunjukkan Ruslan di bawah ini, Anda juga dapat menggunakan fungsi terurut bawaan daripada list.sort
metode, yang membuat daftar baru daripada menyortir yang sudah ada di tempat:
print(sorted(xs, key=len))
lambda
; cukup gunakankey = len