On Jan 29, 8:17 pm, Duncan Booth <[EMAIL PROTECTED]> wrote:
> Berteun Damman <[EMAIL PROTECTED]> wrote:
> > On Tue, 29 Jan 2008 09:23:16 -0800 (PST), [EMAIL PROTECTED]
> ><[EMAIL PROTECTED]> wrote:
> >> If you're going to delete elements from
> >> a list while iterating over it, then do
> >> it in reverse order:
>
> > Why so hard? Reversing it that way creates a copy, so you might as
> > well do:
> >>>> a = [ 98, 99, 100 ]
> >>>> for i, x in enumerate(a[:]):
> >  ...     if x == 99: del(a[i])
> >  ...     print x
>
> Why so hard?
>
> >>> a = [ 98, 99, 100, 98, 99, 100 ]
> >>> for i, x in enumerate(a[:]):
>
>         if x == 99: del(a[i])

Why so hard? :)

a = [x for x in a if x != 99]

OK, so this doesn't modify a in place.. but how often do you really
need to do that?

If I really had to modify it in place (and the condition wasn't really
x == 99), how about:
bad_indices = [i for i, x in enumerate(a) if x == 99]
for bad_index in reversed(bad_indices):
    del a[bad_index]

--
Paul Hankin
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to