私は、奇数の整数のリストで偶数の整数を見つけようとしています。しかし、奇数の整数のリストの長さが偶数であれば、偶数の整数ではなくリストの最初の数を返します。どんな助けもありがとうございます。以下のコード:以下奇数/偶数のリストのパリティ外れ値を見つける
even = [2, 4, 6, 8, 10, 12, 14, 2091] #2091 is the outlier and len(x) = 8
odd = [1, 3, 5, 7, 9, 11, 13, 4720] #4720 is the outlier and len(x) = 8
def find_outlier(x):
# Determine if list is even and length of list is odd
if sum(x) % 2 != 0 and len(x) % 2 != 0:
for x in x:
if x % 2 != 0:
return x
# Determine if list is even and length of list is even
elif sum(x) % 2 != 0 and len(x) % 2 == 0:
for x in x:
if x % 2 != 0:
return x
# Determine if list is odd and length of list is odd
elif sum(x) % 2 == 0 and len(x) % 2 != 0:
for x in x:
if x % 2 == 0:
return x
# Determine if list is odd and length of list is even (PROBLEM)
elif sum(x) % 2 == 0 and len(x) % 2 == 0:
for x in x:
if x % 2 == 0:
return x
print (find_outlier(even))
print (find_outlier(odd))
ドミトリの溶液から再フォーマットの問題に対する正しい解決策です:
def find_outlier(x):
odd = [i for i in x if i % 2 != 0]
even = [i for i in x if i % 2 == 0]
return odd[0] if len(odd) < len(even) else even[0]
'X'におけるxの:私は実際にあることを試したことがありませんが、それは難しいようだ:どのような 'X'は、ループ中にある:元のリスト、またはありません単一の番号に変更されますか? – Evert
リストに複数の外れ値がある場合、あなたの解は機能しません。また、 'i%2!= 0'を使用することは奇妙です。これは' i%2'と明記されています。次のテストと同様です。より簡潔な文の私の答えを参照してください –