Dividere un elenco in base a una condizione?

| | | | | | | | |

Qual è il modo migliore, sia dal punto di vista estetico che dal punto di vista delle prestazioni, per dividere un elenco di elementi in più elenchi in base a un condizionale? L'equivalente di:

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

esiste un modo più elegante per farlo?

Aggiornamento: ecco il caso d'uso effettivo, per spiegare meglio cosa sto cercando di fare:

# file assomigliano a: [ ("file1.jpg", 33L, ".jpg "), ("file2.avi", 999L, ".avi"), ... ] IMAGE_TYPES = (".jpg",".jpeg",".gif",".bmp",".png") images = [f per f nei file se f[2].lower() in IMAGE_TYPES] anims = [f per f nei file se f[2].lower() non in IMAGE_TYPES]