2017-02-23 67 views
-2

創建一個將對輸入執行2個測試的lambda。測試1很簡單 - 只需要知道輸入b是否在名爲pats的列表中。如果該測試是錯誤的,那麼它應該測試輸入在列表wcardpats中是否匹配根據fnmatch.filter([b],在WCARDPATS中的任何輸入)。我正在使用[b],因爲b不會是一個列表,但fnmatch.filter()會將文件名列表作爲第一個參數,並將要測試的模式作爲第二個參數。列表中的Python lambda函數

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

所以,當我用我的測試,我的輸入(b)是無論是在pats, 或wcardpats中的一個條目返回匹配fnmatch.filter([b], wcardpats進入)拉姆達。

我需要使用fnmatch.filter()而不是reg-ex。

+0

只需定義一個函數而不是匿名lambda。更容易。 – Elmex80s

+1

你只是在尋找'any'功能嗎? 'lambda b:b pats或任何(fnmatch.filter([b],e)for wcardpats)' – chepner

+0

@ Elmex80s:因爲這是我需要調整的大量代碼的一部分。該函數當前返回其他地方使用的lambda表達式。我們需要改變將被視爲「真實」的東西。我被分配了這個任務。 –

回答

0

因爲我不能接受評論作爲答案,我想我會自己回答。 @chepner是正確的:lambda b: b in pats or any(fnmatch.filter([b], e) for e in wcardpats)的作品。