[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] more basic python lists question



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.joe@xxxxxxxxx> 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