Remova um número par / ímpar de uma lista ímpar / par de Python

Estou tentando entender melhor a compreensão da lista em Python. Concluí um desafio on-line em codewars com uma solução bastante deselegante, fornecida abaixo.

O desafio foi:

Dada uma lista de números pares e um ímpar, retorne o ímparDada uma lista de números ímpares e um par, retorne o par

Minha solução (deselegante) para isso foi:

def find_outlier(integers):
    o = []
    e = []
    for i in integers:
        if i % 2 == 0:
            e.append(i)
        else:
            o.append(i)
    # use sums to return int type
    if len(o) == 1:
        return sum(o)
    else:
        return sum(e)

O que funciona bem, mas parece ser uma força bruta. Estou errado ao pensar que iniciar (a maioria) funciona com listas de marcadores comoo ee é bonito "noob-like"?

Gostaria de entender melhor por que essa solução funciona para a lista ímpar, mas falha na lista par, em um esforço para entender melhor a compreensão da lista:

def find_outlier(integers):
    if [x for x in integers if x % 2 == 0]:
       return [x for x in integers if x % 2 == 0]
    elif [x for x in integers if x % 2 != 0]:
       return [x for x in integers if x % 2 != 0]
    else:
        print "wtf!"

o = [1,3,4,5]
e = [2,4,6,7]

In[1]: find_outlier(o)
Out[1]: [4]

In[2]: find_outlier(e)
Out[2]: [2, 4, 6]

OndeOut[2] deveria estar voltando7.

Agradecemos antecipadamente por qualquer insights.

questionAnswers(3)

yourAnswerToTheQuestion