[Newby question] List comprehension

Skip Montanaro skip at pobox.com
Fri Aug 6 11:57:39 EDT 2004


    Eelco> # song filter: will return true if the file seems to be an mp3 file. 
    Eelco> # (may not be the best way to do this)
    Eelco> def song(f):
    Eelco>     (name, ext) = os.path.splitext(f)
    Eelco>     return ext.lower() == '.mp3'

    Eelco> # list comprehension walking through a directory tree
    Eelco> [(root, filter(song, files)) for (root, dir, files) in os.walk(os.path.abspath('.')) if filter(song, files)]

In this particular case, since song() only returns True or False, you could
use

    [(root, True) for (root, dir, files) in os.walk(os.path.abspath('.'))
                      if filter(song, files)]

Skip



More information about the Python-list mailing list