2024-04-24 20:45:27 发布
网友
我在找一个优雅的(短!)返回与特定条件匹配的列表的第一个元素,而不必为列表的每个元素计算条件的方法。最后我想到:
(e for e in mylist if my_criteria(e)).next()
有更好的办法吗?
更准确地说:python内置了诸如all()和any()之类的函数,有类似first()这样的函数难道不合理吗?出于某种原因,我不喜欢在我的解决方案中调用next()。
all()
any()
first()
next()
不-看起来不错。我可能会想重新写:
from itertools import ifilter next(ifilter(my_criteria, e))
或者至少将计算分解成一个生成器,然后使用它:
blah = (my_function(e) for e in whatever) next(blah) # possibly use a default value
另一种方法,如果您不喜欢next:
next
from itertools import islice val, = islice(blah, 1)
如果它是“空的”,则会给您一个ValueError异常
ValueError
怎么样:
next((e for e in mylist if my_criteria(e)), None)
我提议使用
或者
next(ifilter(my_criteria, mylist), None)
不-看起来不错。我可能会想重新写:
或者至少将计算分解成一个生成器,然后使用它:
另一种方法,如果您不喜欢
next
:如果它是“空的”,则会给您一个
ValueError
异常怎么样:
我提议使用
或者
相关问题 更多 >
编程相关推荐