我有一个列表的列表:如何在元素总和最大的列表中找到列表?
x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
我想获得其其元素的总和是在列表中的最大列表。在这种情况下[7,8,9]
。
我宁愿有一个花式map
或lambda
或列表理解方法比for/while/if
循环。
问候
我有一个列表的列表:如何在元素总和最大的列表中找到列表?
x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
我想获得其其元素的总和是在列表中的最大列表。在这种情况下[7,8,9]
。
我宁愿有一个花式map
或lambda
或列表理解方法比for/while/if
循环。
问候
max
takes a key argument,有了它,你可以告诉最大值如何计算值在迭代的每个项目。 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]]
打我吧:) +1虽然 – 2012-07-17 09:38:48
@JonClements:这与* *我有再次查找关键字参数名称。 :-P – 2012-07-17 09:39:29
完美:)我不知道它可能如此简单。 – alwbtc 2012-07-17 09:40:54