Was ist die idiomatische Art zu tun maximumBy (Funktion höherer Ordnung nimmt eine Vergleichsfunktion für den Test), auf einer Liste von Listen, wo der Vergleich wir machen wollen die Summe der Liste, in Python?Suche nach dem Maximum einer Liste von Listen nach der Summe der Elemente in Python
Hier ist ein Haskell Implementierung und Beispielausgabe:
> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]
und Implementierungen dieser Basisbibliotheksfunktionen, nur der Vollständigkeit halber (falls Sie reduzieren oder etwas verwenden wollen :)
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
Haha, tolle Lösung! –
+1. Kurz, klar und präzise. Sehr pythonisch. –
max (a) scheint das Gleiche zu tun. – titaniumdecoy