filter in for loop

GHZ geraint.williams at gmail.com
Thu Aug 28 06:20:29 EDT 2008


I would like to say something like:

for x in l if <expression>:
    <do something>

e.g.

for filename in os.listdir(DIR) if filename[-4:] == '.xml':
    <do something>


instead of having to say:

for filename in os.listdir(DIR):
    if filename[-4:] == '.xml':
        <do something>

or

for filename in (f for f in os.listdir(DIR) if f[-4] == '.xml'):
    <do something>


is there a shortcut I'm missing?



More information about the Python-list mailing list