python删除列表中的偶数_从奇数/偶数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这样的占位符列表开始(大多数)函数是非常“noob-like”我错了吗?
我希望更好地理解为什么这个解决方案适用于奇数列表,但是在偶数列表中失败,以便更好地理解列表理解:
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.
提前感谢任何见解.