Python: dividir uma lista com base em uma condição?

Qual é a melhor maneira, estética e do ponto de vista de desempenho, de dividir uma lista de itens em várias listas com base em condicionais? O equivalente a:

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

xiste uma maneira mais elegante de fazer iss

Atualização: aqui está o caso de uso real, para explicar melhor o que estou tentando fazer:

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

questionAnswers(40)

yourAnswerToTheQuestion