我有一個列表的列表:如何在元素總和最大的列表中找到列表?
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