[Python] Il dilemma degli array mutabili

Giovanni Porcari giovanni.porcari a softwell.it
Gio 19 Set 2013 18:36:24 CEST


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

> Il giorno 19/set/2013 15:08, "Piergiuliano Bossi" <pgbossi a 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.



Maggiori informazioni sulla lista Python