[Python] media di un generatore
Piergiuliano Bossi
pgbossi a gmail.com
Mer 11 Dic 2013 16:51:57 CET
2013/12/11 Marco Chieppa | crap0101 <crap0101 a riseup.net>
> Il giorno Tue, 10 Dec 2013 23:20:10 -0500
> Piergiuliano Bossi <pgbossi a 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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131211/57a98eac/attachment.html>
Maggiori informazioni sulla lista
Python