我有一个函数列表,每个函数都可以返回None
或有效值。我想取第一个not None
响应的结果:
funcs = (lambda: None, lambda: None, lambda: True)
result = next((f() for f in funcs if f()), None) # result = True
这是可行的,但我不喜欢我不得不执行两次函数来执行测试并生成结果。有没有办法只执行f()
一次并维护解决方案?你知道吗
另外,我知道我可以用for
或传统的循环(这就是目前的代码),我正在寻找一个很好的一行:)
Tags:
在迭代时使用^{} function 删除任何错误结果(包括
None
):为了确保在python2中使用迭代器版本的} function from the ^{} module 。你知道吗
filter()
,我还使用了^{只是一个演示,说明它不会执行比需要更多的功能:
相关问题 更多 >
编程相关推荐