10

我有一个列表列表:

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

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

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

此致

4

3 回答 3

24

max接受一个关键参数,通过它你可以告诉 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']
于 2012-07-17T09:37:50.857 回答
0

为了完整起见,正如@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]]
于 2012-07-17T09:47:18.747 回答
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`
于 2021-07-02T14:39:06.380 回答