繁体   English   中英

如何在列表中找到元素总和最大的列表?

[英]How to find the list in a list of lists whose sum of elements is the greatest?

我有一份清单清单:

x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]

我想得到列表中其元素总和最大的列表。 在这种情况下[7,8,9]

我宁愿有一个花哨的maplambda或列表理解方法而不是for/while/if循环。

最好的祝福

max接受一个关键参数 ,用它可以告诉max如何计算iterable中每个项的值。 sum将在这里做得很好:

max(x, key=sum)

演示:

>>> x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
>>> max(x, key=sum)
[7, 8, 9]

如果您需要使用不同的方法来总结项目,您也可以指定自己的功能; 这不仅限于python内置函数:

>>> def mymaxfunction(item):
...     return sum(map(int, item))
...
>>> max([['1', '2', '3'], ['7', '8', '9']], key=mymaxfunction)
['7', '8', '9']

为了完整性,并且@Martijn打败了我最优雅的答案 - 我只是在key=参数在Python中可用之前抛出选项(但如果你使用<2.5 - 你应该真的升级)以及它有多难看用来:

x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
with_idx = ( (sum(v), i) for i,v in enumerate(x))
print x[max(with_idx)[1]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM