Cách thành ngữ để làm maximumBy (hàm bậc cao hơn lấy hàm so sánh cho thử nghiệm), trên danh sách danh sách, nơi so sánh chúng tôi muốn thực hiện là tổng của danh sách, bằng Python?Tìm tối đa danh sách các danh sách theo tổng các phần tử trong Python
Dưới đây là một Haskell thực hiện và dụ đầu ra:
> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]
Và triển khai những chức năng thư viện cơ sở, chỉ cho đầy đủ (trong trường hợp bạn muốn sử dụng làm giảm hoặc một cái gì đó :)
maximumBy cmp xs = foldl1 maxBy xs
where
maxBy x y = case cmp x y of GT -> x; _ -> y
k `on` f = \x y -> f x `k` f y
sum = foldl' (+) 0
Giải pháp tuyệt vời! Haha! –
+1. Ngắn gọn, rõ ràng và chính xác. Rất nhiệt tình. –
max (a) có vẻ giống như vậy. – titaniumdecoy