[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