???? i can`t understand it

Sean 'Shaleh' Perry shalehperry at comcast.net
Fri Aug 8 04:39:11 EDT 2003


On Friday 08 August 2003 01:11, Enrique wrote:
> >>> a=[1,2,3,4,5]
> >>> for b in a:
>
> ...  a.remove(b)
> ...
>
> >>> a
>
> [2, 4]

does this help??

>>> a = range(1,6)
>>> for b in a:
...     print b
...     a.remove(b)
... 
1
3
5
>>> a
[2, 4]

I read this as "do not remove items from a list you are iterating over".  
Pretty sure the docs comment on this as well.

What seems to happen is b = 1, 1 is removed from a.  b should then be 2.  But 
the internal counter skips it and goes to 3.  So what i see happening is:

next = 0
for b = a(next):
    a.remove(b)
    next += 1

so a[1] is 3 when we expect it to be 2 because 2 is now at index a[0].






More information about the Python-list mailing list