2017-02-23 34 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)的作品。