2017-02-23 7 views
-2

入力に対して2つのテストを実行するラムダを作成する。テスト1は簡単です。入力bがpatsというリストに含まれているかどうかを知る必要があります。そのテストが偽である場合、入力がリストwcardpatsに一致するかどうかテストする必要があります。これは、fnmatch.filter([b], ANY ENTRY IN WCARDPATSに従っています)。 bはリストではないので、fnmatch.filter()は最初のパラメータとしてファイル名のリストを、2番目のパラメータとしてテストするパターンをとるため、[b]を使用しています。リスト上のPythonラムダ関数

`lambda b: b in pats` OR THE SECOND TEST 

だから、私は私の入力は、(b)のpats、 またはwcardpats内のエントリの1)がfnmatch.filter([b], wcardpatsエントリの一致を返すのいずれかであることをテストしていラムダを使用する場合。

reg-exではなくfnmatch.filter()を使用する必要があります。

+0

匿名のラムダの代わりに関数を定義するだけです。ずっと簡単。 – Elmex80s

+1

'any'関数を探していますか? 'lambda b:bはpatや任意のもの(wcardpatsのfnmatch.filter([b]、e))' – chepner

+0

@ Elmex80s:これは私が微調整する必要のある大量のコードの一部です。関数は現在、他の場所で使用されているラムダを返します。私たちは何が「真実」になるかを変える必要があります。私はこの仕事に割り当てられました。 –

答えて

0

私は答えとしてコメントを受け入れることができないので、私は自分自身でそれに答えると思います。 @chepnerは正しいです:lambda b: b in pats or any(fnmatch.filter([b], e) for e in wcardpats)が動作します。