私はPythonのリストの理解をよりよく理解しようとしています。私はコードワードでのオンラインチャレンジを、あまり面白味のない解決策で完成させました。奇数/偶数のPythonリストから偶数/奇数を削除する
挑戦されました:
- でも
私を返し、奇数と偶数1のリストを考えると
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)
これはうまく動作しますが、かなり有害なものですrce。 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
を返すべきです。
ありがとうございました。
リスト内包表記はここでは最善の解決策ではありません。最小数の要素をチェックして、代わりにそれを解決しようとしてください(タイプが異なる場合は最初の2つの要素、3番目の要素を取得する、そうでなければ末尾に収まらないまで繰り返します)。 –
'整数 'リストに少なくとも2つの偶数*と* 2の奇数が含まれているとどうなりますか?私はあなたが本当に 'wtf'を印刷したくないと確信しています**。意味のある価値を返すか(わからないこと:空リスト?)、例外を発生させて呼び出し元に処理させてください。 'print'ステートメントを追加することは、エラーを処理してコードをデバッグする本当の効果的な方法ではありません。 – Bakuriu
この特定のケースでは、偶数/奇数リストには常に1つだけ奇数/偶数が存在します。 @MartijnPietersはあなたの反復提案をまだ検討しています。 – d8aninja