Ciao a tutti, un altro quesito della Susy: data una funzione e una collezione, come fate a calcolare il valore in corrispondenza del quale la funzione e' massimizzata?
Diciamo che ogni oggetto nella collezione _values implementa un metodo func() che ritorna un valore confrontabile. V1 def _max_value(self): max_value = self._values[0] # facciamo finta che la la collezione e' per definizione non vuota e ogni valore e' significativo for i in range(1, len(self._values)): if self._values[i].func() > max_values.func(): max_value = self._values[i] return max_value Questa versione funziona, ma il codice fa francamente un po' schifo e la prossima volta che ho un problema simile dovro' riscrivere tutto. V2 def value_at_max(values, functor): max_value = None # si usano trucchetti come questo con None o ci sono modi migliori? for value in values: if not max_value or functor(value) > functor(max_value): max_value = value return max_value def _max_value(self): return value_at_max(self._values, lambda v: v.func()) V2 mi sembra meglio, riutilizzero' value_at_max in altri posti. C'e' un V3 migliore? Se ci fosse gia' una funzione built-in sarei ancora piu' contento. Come la mettiamo in termini "pitonici"? Sto distorcendo il linguaggio in modo innaturale? Ciao, Giuliano -- Piergiuliano Bossi Blog: http://thinkingbox.wordpress.com/ Twitter: http://twitter.com/thinkingbox (English) Twitter: http://twitter.com/scatolapensante (Italiano) Google+: https://plus.google.com/u/0/108187981162465525118
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python