[英]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]
。
我宁愿有一个花哨的map
或lambda
或列表理解方法而不是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.