Dividir uma lista com base em uma condição?

| | | | | | | | |

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

bom = [x for x em minhalista se x em goodvals] bad = [x for x in mylist if x não em goodvals] 

existe uma maneira mais elegante de fazer isso?

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

# arquivos se parecem com: [ ("file1.jpg", 33L, ".jpg "), ("arquivo2.avi", 999L, ".avi"), ... ] IMAGE_TYPES = (.jpg",".jpeg",".gif",".bmp",".png") images = [f para f em arquivos se f[2].lower() em IMAGE_TYPES] anims = [f para f em arquivos se f[2].lower() não em IMAGE_TYPES]