Python: ¿dividir una lista basada en una condición?


¿Cuál es la mejor manera, tanto estéticamente como desde una perspectiva de rendimiento, de dividir una lista de elementos en varias listas basadas en un condicional? El equivalente de:

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

Hay una 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:

# 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]

Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52