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 >