【发布时间】:2011-02-15 07:43:04
【问题描述】:
在列表列表中,我们想要进行的比较是列表的总和,在 Python 中,maximumBy(高阶函数采用比较函数进行测试)的惯用方式是什么?
这是一个 Haskell 实现和示例输出:
> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]
以及这些基本库函数的实现,只是为了完整性(以防你想使用 reduce 或其他东西:)
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
【问题讨论】:
标签: python list haskell higher-order-functions