[Python] media di un generatore
Giovanni Porcari
giovanni.porcari a softwell.it
Mer 11 Dic 2013 19:19:25 CET
Il giorno 11/dic/2013, alle ore 16:45, Marco Beri <marcoberi a gmail.com> ha scritto:
> On Wed, Dec 11, 2013 at 4:31 PM, Piergiuliano Bossi <pgbossi a gmail.com> wrote:
> Mi piace molto. Ho solo una domanda: perche' serve __getattr__ e perche' ribalta la chiamata su __getattribute__ del generatore?
>
>
> avg1 2.72754812241
> avg2 2.58321499825
> avg3 6.11401891708
> avg4 2.8605260849
> avg5 4.49426484108
>
> La (bella) versione di Giovanni č perņ un po' inefficiente.
>
class Enumerated(object):
def __init__(self, gen):
self.gen = enumerate(gen)
self._counter=0
def count(self):
return self._counter+1
def __iter__(self):
for k in self.gen:
self._counter, k = k
yield(k)
def __getattr__(self,name):
return self.gen.__getattribute__(name)
Con questa versione di Enumerated i tempi migliorano un po:
avg1 3.31683301926
avg2 2.97292208672
avg3 5.03367805481
avg4 1.97484779358
avg5 3.58412313461
Ciao
G
Maggiori informazioni sulla lista
Python