Tôi đang cố gắng sử dụng lambda để phân loại một số trong danh sách. Những gì tôi muốn làm là sắp xếp các tọa độ dựa trên khoảng cách manhattan của chúng từ một sự xâm lấn trong miệng. Tôi biết tôi có hầu hết các cú pháp xuống nhưng có vẻ như tôi đang thiếu một cái gì đó nhỏ, Cảm ơn!Sử dụng lambda trong Python
while (len(queue) > 0):
queue.sort(queue, lambda x: util.manhattanDistance(curr,x))
Lưu ý rằng, các câu lệnh kiểm soát trong Python không cần (và không nên có) dấu ngoặc đơn: 'while len (hàng đợi)> 0: '. Nhưng, vì 0 là false và bất kỳ số nguyên nào khác không phải, điều này giống hệt với 'while len (queue):'. Và, vì một chuỗi rỗng là sai và bất kỳ trình tự nào khác không, chuỗi này giống hệt với 'while queue:'. Và đó là cách bạn nên viết nó - nó thành ngữ hơn, dễ đọc hơn, ngắn hơn và thậm chí có thể hiệu quả hơn. – abarnert
Một vấn đề nữa tôi vừa nhận thấy: Bạn đang chuyển 'hàng đợi' làm đối số đầu tiên cho' queue.sort'. Dù loại 'hàng đợi' là gì, điều đó không đúng. (Oh, và không gọi biến 'hàng đợi'; đó là tên của một mô-đun thư viện chuẩn.) – abarnert
Ngoài ra:' sort' sẽ không thay đổi độ dài của đối tượng, vì vậy đây chỉ là lặp đi lặp lại mãi mãi, sắp xếp lại một danh sách đã được sắp xếp đi lặp lại. – abarnert