2013-05-30 7 views
6

私はPythonで項目のリストを持ち、その項目が有効かどうかをチェックする方法を持っています。私はそこに項目のいずれかが無効な場合は、リスト全体を拒否する必要があります。私はこれを行うことができます:Pythonでリストを拒否する簡単な方法

def valid(myList): 
    for x in myList: 
     if isInvalid(x): 
      return False 
    return True 

これを行うにはもっとPythonicな方法がありますか?あなたはそれをフィルタリングすることができますが、リストのすべての項目を評価すると、最初のものを評価するだけで十分な場合があります(悪い場合)...

ありがとうございました。

答えて

14

これを行うための典型的な方法は、ジェネレータ式

if any(isInvalid(x) for x in myList): 
    #reject 

構文はクリーンでエレガントであると組み込みany機能を使用することで、あなたがあなたの元の関数にいたのと同じ短絡動作を取得します。

+0

ニース!、そのようなことを知らなかった! – gt6989b

+0

これは 'not any'でなければなりません。 –

+0

@AshwiniChaudhary - 私はプログラムのロジックを変更することを好む。いずれかが無効な場合は、OPが現在持っているものではなく、リストを拒否します。何も無効でない場合は、リストを保持します。しかしそれは最終的にOPが決定するためのものです。 – mgilson

関連する問題