Удалить четное / нечетное число из нечетного / четного списка Python
Я пытаюсь лучше понять понимание списка в Python. Я выполнил онлайн-задание по кодовым войнам с довольно неэффективным решением, приведенным ниже.
Задача была:
Учитывая список четных чисел и одного нечетного, вернуть нечетноеУчитывая список нечетных чисел и одно четное, вернуть четноеМое (не элегантное) решение этого было:
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
а такжеe
довольно "как нуб"?
Я хотел бы лучше понять, почему это решение работает для нечетного списка, но не в четном списке, чтобы лучше понять понимание списка:
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]
кудаOut[2]
должен возвращаться7
.
Заранее спасибо за любые идеи.