首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中通过元素总和查找列表的最大值

在Python中通过元素总和查找列表的最大值
EN

Stack Overflow用户
提问于 2010-05-04 13:32:30
回答 3查看 3.2K关注 0票数 15

在Python语言中,对列表列表进行maximumBy (高阶函数接受比较函数)的惯用方法是什么,其中我们想要进行的比较是列表的总和?

下面是一个Haskell实现和示例输出:

代码语言:javascript
复制
> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]

以及这些基础库函数的实现,只是为了完整性(如果您想使用reduce或其他什么:)

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-04 13:35:08

从Python2.5开始,您可以使用带有关键参数的max

代码语言:javascript
复制
>>> max(a, key=sum)
[4, 5, 6]
票数 41
EN

Stack Overflow用户

发布于 2010-05-04 13:37:55

它的效率不是很高,但是:

代码语言:javascript
复制
reduce(lambda x,y: x if sum(x)>sum(y) else y, [[1,2,3],[4,5,6],[1,3,5]])
票数 1
EN

Stack Overflow用户

发布于 2011-06-01 05:25:33

如果max没有key参数,您可以显式地编写DSU模式:

代码语言:javascript
复制
max(izip(imap(sum,a),a))[1]

izipimap来自Python2中的itertools模块,它们做zip和map做的事情,但懒惰地使用python生成器,以避免包含中间列表。在Python3中,地图和zip内置是惰性的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2763015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档