Il giorno 19/set/2013, alle ore 16:31, Marco Beri <marcob...@gmail.com> ha 
scritto:

> Il giorno 19/set/2013 15:08, "Piergiuliano Bossi" <pgbo...@gmail.com> ha 
> scritto:
> che fa tutto al volo e mi e' venuta al primo colpo:
> 
> > def useless(list):
> >     return [list[i] for i in range(len(list)) if evaluate(list[:i] + 
> > list[i+1:]) == evaluate(list)]
> 
> Questo codice può diventare un più chiaro con enumerate:
> 
> def useless(list):
>     return [val for i, val in enumerate(list) if evaluate(list[:i] + 
> list[i+1:]) == evaluate(list)]
> 
> 


Butto lì un'ipotesi vaga senza pensarci troppo (quindi ha un'elevata 
probabilità di essere una fesseria) :

E se invece di togliere gli elementi si usasse un array parallelo di booleani 
che dicono se l'elemento è attivo o no ?

Si potrebbe avere un generatore che dice

def filtered_list(mylist,flags):
    for k,v in enumerate(mylist):
        if flags[k]:
            yield v


E poi la evaluate si fa sulla filtered_list.

A questo punto non si deve duplicare la lista ma solo settare i flag e ripetere 
il calcolo.

Dico una bestialità o ha un senso ?

G.

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Reply via email to