在python中有一个枚举器查找方法吗?

时间:2017-10-12 14:56:00

标签: python

在Ruby中,您可以在找到符合特定条件的数组中的第一个实例后使用#find方法进行短路。

arr = [5,6,7]
arr.find { |n| n % 2 == 0 } #=> 6

Python中是否有等价物?或者你需要使用for循环吗?我试图避免这种情况:

arr = [5,6,7]
for n in arr:
  return n if n % 2 == 0

也许有发电机的解决方案?或者也许for循环只是唯一的pythonic解决方案。

1 个答案:

答案 0 :(得分:6)

  

也许有生成器的解决方案?

是的,您可以使用生成器并在其上调用next。返回与条件匹配的第一个项目,如果没有,则引发StopIteration错误:

next(n for n in arr if n % 2 == 0)

Python还允许您传递默认返回值,以防所有项都不符合过滤条件,从而抑制错误:

next((n for n in arr if n % 2 == 0), None)