Khi bạn chuyển một lambdađến sort, bạn cần trả về một số nguyên, không phải boolean. Vì vậy, mã của bạn thay vào đó nên đọc như sau:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Lưu ý rằng cmp là một hàm nội trang cmp(x, y)trả về -1 nếu xnhỏ hơn y, 0 nếu xbằng yvà 1 nếu xlớn hơn y.
Tất nhiên, thay vào đó bạn có thể sử dụng keytham số:
xs.sort(key=lambda s: len(s))
Điều này cho biết sortphương thức sắp xếp thứ tự dựa trên bất kỳ thứ gì mà hàm khóa trả về.
CHỈNH SỬA: Cảm ơn balpha và Ruslan bên dưới đã chỉ ra rằng bạn chỉ có thể truyền lentrực tiếp làm tham số chính cho hàm, do đó loại bỏ sự cần thiết phải có lambda:
xs.sort(key=len)
Và như Ruslan chỉ ra bên dưới, bạn cũng có thể sử dụng hàm sắp xếp được tích hợp sẵn thay vì list.sortphương pháp tạo danh sách mới thay vì sắp xếp danh sách hiện có tại chỗ:
print(sorted(xs, key=len))
lambda; chỉ cần sử dụngkey = len