[Tutor] question about removing items from a list

Lloyd Kvam lkvam@venix.com
Tue, 14 Aug 2001 20:56:52 -0400

You are changing the list while you are stepping through the list in the for statement.

for item in lista returns the 'a' - the first thing in the list.

The processing then removes 'a' from lista. lista is now: 'b','c','d'

for item in lista now returns the SECOND object which is 'c'

It also gets removed, reducing lista to 'b','d'

Now the for item in lista reaches for a THIRD object and hits the end of the list....

The moral is don't delete from a list from within the for statement that is processing that list.

John Kenyon wrote:
> Can anyone explain why the following works the way it does?
> >>>lista = ['a', 'b', 'c', 'd']
> >>>for item in lista:
> ...     lista.remove(item)
> ...
> >>>lista
> ['b', 'd']
> thanks much,
> jck
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor

Lloyd Kvam
Venix Corp.
1 Court Street, Suite 378
Lebanon, NH 03766-1358

voice:	603-443-6155
fax:	801-459-9582