Python: split a list based on a condition?

Posted by Parand on Stack Overflow See other posts from Stack Overflow or by Parand
Published on 2009-06-04T07:37:18Z Indexed on 2010/05/10 0:38 UTC
Read the original article Hit count: 346

Filed under:

What's the best way, both aesthetically and from a performance perspective, to split a list of items into multiple lists based on a conditional? The equivalent of:

good = [x for x in mylist if x in goodvals]
bad  = [x for x in mylist if x not in goodvals]

is there a more elegant way to do this?

Update: here's the actual use case, to better explain what I'm trying to do:

# files looks like: [ ('file1.jpg', 33L, '.jpg'), ('file2.avi', 999L, '.avi'), ... ]
IMAGE_TYPES = ('.jpg','.jpeg','.gif','.bmp','.png')
images = [f for f in files if f[2].lower() in IMAGE_TYPES]
anims  = [f for f in files if f[2].lower() not in IMAGE_TYPES]

© Stack Overflow or respective owner

Related posts about python