La lista viene modificata dentro il for, per cui ciclo "salta" degli elementi:
L1=[(1, 3, 16300), (2, 0, 12000), (3, 0, 13500), (3, 1500, 1000), (1, 4, 38473), (1, 5, 38473), (5, 5, 38473), (3, 5, 38473), (2, 5, 38473), (1, 1, 38473)] L=L1[:] >>> for k in L: ... print "controllo %s"%(str(k)) ... if k[0] == 1: ... L.remove(k) ... controllo (1, 3, 16300) controllo (3, 0, 13500) controllo (3, 1500, 1000) controllo (1, 4, 38473) controllo (5, 5, 38473) controllo (3, 5, 38473) controllo (2, 5, 38473) controllo (1, 1, 38473) come vedi, dopo (1, 3, 16300) k diventa (3, 0, 13500), saltando (2, 0, 12000), perche' k diventa il next() elemento di una lista DIVERSA (che ha perso il primo elemento, in questo caso) Stefano On Mon, Oct 13, 2008 at 3:44 PM, <[EMAIL PROTECTED]> wrote: > Ciao, > sto cercando di eliminare alcuni elementi da una lista, ma ottengo uno > strano comportamento: > >>>> L > [(1, 3, 16300), (2, 0, 12000), (3, 0, 13500), (3, 1500, 1000), (1, 4, > 38473), (1 > , 5, 38473), (5, 5, 38473), (3, 5, 38473), (2, 5, 38473), (1, 1, 38473)] >>>> for k in L: > ... if k[0] == 1: > ... L.remove(k) > ... >>>> L > [(2, 0, 12000), (3, 0, 13500), (3, 1500, 1000), (1, 5, 38473), (5, 5, > 38473), (3 > , 5, 38473), (2, 5, 38473)] > > Come vedete (1, 5, 38473) è rimasto, e non capisco perché. > > La mia versione di python: > ActivePython 2.5.2.2 (ActiveState Software Inc.) based on > Python 2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit > (Intel)] on > win32 > > Dove sbaglio? > Grazie > > > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python