Разделить список на основе условия?

| | | | | | | | |

Как с эстетической точки зрения и с точки зрения производительности лучше всего разделить список элементов на несколько списков на основе условия? Эквивалент:

good = [x for x в mylist, если x в goodvals] bad = [x for x в mylist, если x не в goodvals] 

есть ли более элегантный способ сделать это?

Обновление: вот фактический вариант использования, чтобы лучше объяснить, что я пытаюсь сделать:

# файлов выглядит следующим образом: [ ("file1.jpg", 33L, ".jpg "), ("file2.avi", 999L, ".avi"), ... ] IMAGE_TYPES = ("".jpg", ".jpeg", ".gif", ".bmp", ".png") images = [f для f в файлах, если f[2].lower() в IMAGE_TYPES] anims = [f для f в файлах, если f[2].lower() не в IMAGE_TYPES]