[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