从潜在广泛的列表中获取满足特定条件的第一个元素是常见的任务。虽然像您这样的自定义函数可以实现此目的,但 Python 中可能内置了更有效的替代方案。
对于这些版本,接下来考虑内置函数产生以下两种方法:
提高StopIteration:
next(x for x in the_iterable if x > 3)
返回默认值(例如 None):
next((x for x in the_iterable if x > 3), default_value)
注意:以下解决方案比 Python 2.6 的效率低,因为它们处理整个列表。
下一个方法:
.next()
如果没有元素满足条件,则立即引发 StopIteration .
自定义函数(根据您的初始提案):
def first(the_iterable, condition = lambda x: True): for i in the_iterable: if condition(i): return i
itertools:
from itertools import ifilter, islice first_item = next(ifilter(lambda x: x > 3, the_iterable))
带中断的循环:
for item in the_iterable: if condition(item): break first_item = item
尝试/除外停止迭代:
try: first_item = next(x for x in the_iterable if condition(x)) except StopIteration: return None
以上是如何高效地查找Python列表中的第一个匹配项?的详细内容。更多信息请关注PHP中文网其他相关文章!