我有一份清单清单:
x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]]
我想获得列表中其元素总和最大的列表。在这种情况下[7,8,9]
。
我宁愿使用花哨的map
或lambda
或列表推导方法而不是for/while/if
循环。
最好的问候
答案 0 :(得分:24)
max
takes a key argument,您可以告诉max如何计算可迭代中每个项目的值。 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']
答案 1 :(得分:0)
为了完整性而且@Martijn打败了我最优雅的答案 - 我会在Python中key=
参数可用之前抛出选项(但是如果你使用< 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]]
答案 2 :(得分:0)
num = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
index = 0
max_index = 0
sum_max = 0
for list in num:
>>>>sum_list = 0
>>>>for x in list:
>>>>>>>>sum_list += x
>>>>if sum_list > sum_max:
>>>>>>>>sum_max = sum_list
>>>>>>>>max_index = index
>>>>index += 1
print(num[max_index])`enter code here`