¿Dividir una lista basada en una condición?

| | | | | | | | |

¿Cuál es la mejor forma, tanto desde el punto de vista estético como de rendimiento, de dividir una lista de elementos en varias listas en función de un condicional? El equivalente a:

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

¿hay alguna forma más elegante de hacer esto?

Actualización: aquí está el caso de uso real, para explicar mejor lo que estoy tratando de hacer:

# archivos se ve así: [ ("file1.jpg", 33L, ".jpg "), ("archivo2.avi", 999L, ".avi"), ... ] TIPOS_DE_IMAGEN = (".jpg",".jpeg",".gif",".bmp",".png") imágenes = [f por f en archivos si f[2].lower() en IMAGE_TYPES] anims = [f por f en archivos si f[2].lower() no en IMAGE_TYPES]