2012-07-17 15 views

risposta

24

max takes a key argument, con esso si può dire max come calcolare il valore di ogni elemento in un iterabile. sum farà bene qui:

max(x, key=sum) 

Demo:

>>> x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]] 
>>> max(x, key=sum) 
[7, 8, 9] 

Se è necessario utilizzare un diverso metodo di sommare i tuoi articoli, è possibile specificare le proprie funzioni troppo; questo non è limitata al pitone funzioni built-in:

>>> def mymaxfunction(item): 
...  return sum(map(int, item)) 
... 
>>> max([['1', '2', '3'], ['7', '8', '9']], key=mymaxfunction) 
['7', '8', '9'] 
+0

mi ha battuto ad esso :) +1 però –

+0

@JonClements: Questo è stato * con * me avere per cercare nuovamente il nome dell'argomento della parola chiave. :-P –

+0

Perfetto :) Non avevo idea che potesse essere così semplice. – alwbtc

0

Per completezza e, come mi ha battuto per la risposta più elegante @Martijn - mi limiterò a gettare l'opzione prima del parametro key= era disponibile in Python (ma se si sta utilizzando < 2,5 - si dovrebbe davvero aggiornare) e come brutto L'uso di essere:

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]] 
Problemi correlati