Removing from a List in Place

Tim Williams tim at tdw.net
Tue Sep 5 19:05:43 EDT 2006


On 05/09/06, Gregory Piñero <gregpinero at gmail.com> wrote:
> On 9/5/06, Tim Williams <tim at tdw.net> wrote:
> > > It does already,  you just haven't grasped list fully yet :):)
> > >
> > > when you remove 2 from alist,  the list becomes length 2, there is no
> > > longer a 3rd item in the list to iterate over.
> > >
> > > Try this
> > >
> > > > >>> alist=[1 ,2 ,3, 4]
> > > > >>> for item in alist:
> > > > ....    print item
> > > > ....    if item==2:
> > > > ....            alist.remove(item)
> > > > ....    print alist
> > >
> >
> > sorry,  I meant to offer an alternative also
> >
> > in yourgiven case you can iterate over a copy of the list like this:
> >
> > >>> for item in alist[:] :
> >
>
> Thanks Tim.  I suppose that does make sense.  Iterating over a copy is
> a good alternative.
>

You could also use a list comprehension for your case

>>> alist = [1 ,2 ,3]
>>> alist = [x for x in alist if x != 2]
>>> alist
[1, 3]
>>>

:)



More information about the Python-list mailing list