[pyar] Remover elementos de una lista mientras se la recorre

Andrés Gattinoni andresgattinoni en gmail.com
Lun Dic 27 12:39:06 ART 2010


2010/12/27 Juanjo Conti <jjconti en gmail.com>:
> Lista, les comento un comportamiento que me llamó la atención:
>
>>>> l = range(3)
>>>> for x in l:
> ...     l.remove(x)
> ...
>>>> l
> [1]
>
> Por qué queda un elemento en la lista?
>
> Si uso iter para obtener un iterador con el cual recorrer la lista,
> pasa lo mismo:
>
>>>> l = range(3)
>>>> for x in iter(l):
> ...     l.remove(x)
> ...
>>>> l
> [1]
>
> Esperaba de última un error del tipo: hey! estas modificando la lista
> que estás recorriendo! Pero esto me tomó desprevenido.
>

Bueno saberlo. Cuál sería la forma adecuada de hacerlo? Así?

>>> l = range(3)
>>> for i in range(0, len(l)):
...     l.remove(i)
...
>>> l
[]



More information about the pyar mailing list