This is more pythonic (also more efficient):

filenames = [f for f in filenames if f.endswith(".png")]

Your method with the loop won't work in general. Do it like this.

-Christopher

On Thu, Nov 17, 2011 at 1:24 PM, Sean Wolfe <ether....@gmail.com> wrote:

> I find myself often iterating a list looking to remove the
> undesireable elements. I want to do this:
>
> for f in filenames:
>    if not f.endswith('.png')
>        f.delete()
>
> But I find myself having to do this:
>
> for i in range(len(filenames))::
>    if not filenames[i].endswith(".png"):
>        del filenames[i]
>
>
> I'm wondering if there is a way to do the first option? I suppose I"m
> trying to delete what I'm examining at the same time which maybe is
> why it's problematic.
>
> Thanks!
>
>
> --
> A musician must make music, an artist must paint, a poet must write,
> if he is to be ultimately at peace with himself.
> - Abraham Maslow
>

Reply via email to