我有以下类型的列表:
class Any(object):
def __init__(self,a,b):
self.a=a
self.b=b
l=[Any(1,3),Any(2,4),Any(1,2),Any(None,6),Any('hello',6), Any(1,'ChuckNorris'),Any(1,2)]
Run Code Online (Sandbox Code Playgroud)
l是一个只包含实例的列表Any.我想找到第一个属性a等于'None'的位置.
由于我的列表很长,算法不应该探索整个列表,但是一旦找到条件(在我的示例中,属性a等于None),它就应该停止.
在上面的例子中,这个算法的答案应该是3.
使用生成器表达式next:
next((i for i, item in enumerate(l) if item.a is None), None)
Run Code Online (Sandbox Code Playgroud)
None如果没有找到这样的项目,这将返回.
演示:
>>> l=[Any(1,3),Any(2,4),Any(1,2),Any(None,6),Any('hello',6), Any(1,'ChuckNorris'),Any(1,2)]
>>> next((i for i, item in enumerate(l) if item.a is None), None)
3
Run Code Online (Sandbox Code Playgroud)