Don*_*art 15 python haskell list higher-order-functions
在列表列表中,执行maximumBy(更高阶函数采用测试的比较函数)的惯用方法是什么,我们想要进行的比较是Python中列表的总和?
这是一个Haskell实现和示例输出:
> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]
Run Code Online (Sandbox Code Playgroud)
这些基础库函数的实现,只是为了完整性(如果你想使用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
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 41
从Python 2.5开始,您可以使用max和一个关键参数:
>>> max(a, key=sum)
[4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |