Il giorno Tue, 10 Dec 2013 23:20:10 -0500 Piergiuliano Bossi <pgbo...@gmail.com> ha scritto:
> Pensiero malvagio: > - con enumerate genero una serie di coppie (v, n) > - le zippo e quindi ottengo 2 sequenze (v1, v2, ...) e (1, 2, ...) => > assumo di poter zippare le generator expression, oppure gia' qui sto > sbagliando? > - calcolo le somme di entrambe > - sfrutto il fatto che sum(1, 2, ...) altri non e' che n * (n + 1) / 2, per > cui divido sum(v1, v2, ...) per la soluzione positiva di n^2 + n - 2 * > sum(1, 2, ...) = 0, cioe' 1/2 * (sqrt(8 * sum(1, 2, ..) + 1) - 1) > > > Potrebbe funzionare, ma e' talmente assurdo che manco ci provo a vedere se > sto toppando qualcosa. :) > mhh... magari funziona però non mi sembra molto conveniente e soprattutto leggibile stare a zippare e unzippare più del necessario. Inoltre, invece di fare tutti quei calcoli con sqrt e altro, basta _non_ usare enumerate ma "simularlo" con una genexpr che yielda tuple di valori della sequenza in uso e "uni" che poi sommi tra loro senza fare altre operazioni, tipo così: import itertools, operator def avgfoo(seq): try: return operator.div(*map(sum, itertools.izip(*((x, 1.) for x in seq)))) except TypeError: return 0 avgfoo(range(10)) # 4.5 che però oltre ad essere molto meno leggibile dovrebbe essere anche (molto) meno efficiente e inutilmente complessa. -- me -> http://crap0101.gnu-darwin.org/
signature.asc
Description: PGP signature
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python