在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解决方案。
答案 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)