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