2013/12/11 Marco Chieppa | crap0101 <crap0...@riseup.net> > 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. >
No infatti, era solo un trip notturno. :) > 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 > > Bello, ma a questo punto mi sembra di capire che non abbia molto senso. Grazie mille. 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