<div dir="ltr">2013/9/27 Piergiuliano Bossi <span dir="ltr"><<a href="mailto:pgbossi@gmail.com" target="_blank">pgbossi@gmail.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div>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?</div></div></blockquote><div>
<br></div><div>Primo gravissimo errore: la Susi ha la "i" normale. Troppo inglese ultimamente eh? :-D</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div><br></div><div>Diciamo che ogni oggetto nella collezione _values implementa un metodo func() che ritorna un valore confrontabile.</div>
<div>V1<br></div><div> def _max_value(self):</div><div> max_value = self._values[0]<span style="white-space:pre-wrap"> </span># facciamo finta che la la collezione e' per definizione non vuota e ogni valore e' significativo</div>
<div> for i in range(1, len(self._values)): </div><div> if self._values[i].func() > max_values.func():</div><div> max_value = self._values[i]</div><div>
return max_value</div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Questa versione funziona, ma il codice fa francamente un po' schifo e la prossima volta che ho un problema simile dovro' riscrivere tutto.</div>
<div><br></div><div>
V2</div><div> def value_at_max(values, functor):</div><div> max_value = None<span style="white-space:pre-wrap"> </span># si usano trucchetti come questo con None o ci sono modi migliori?</div><div> for value in values:</div>
<div> if not max_value or functor(value) > functor(max_value):</div><div> max_value = value</div><div> return max_value</div><div><br></div><div> def _max_value(self):</div><div> return value_at_max(self._values, lambda v: v.func())</div>
<div> </div><div>V2 mi sembra meglio, riutilizzero' value_at_max in altri posti.</div></div></blockquote><div><br></div><div>Questa non ti piace?</div><div><br></div><div>max_value = max(functor(value) for value in values)</div>
<div><br></div><div>Ciao.<br></div><div>Marco.</div></div><div><br></div>-- <br><div><div><div><div><a href="http://beri.it/" target="_blank">http://beri.it/</a> - Un blog</div><div><a href="http://beri.it/i-miei-libri/" target="_blank">http://beri.it/i-miei-libri/</a> - Qualche libro</div>
<div><br></div></div></div></div>
</div></div>