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

Rispondere a