我有以下类型的列表:
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)]
l
是一个仅包含 Any
实例的列表。我想找到属性 a
等于“None”的第一个实例的位置。
由于我的列表很长,算法不应探索整个列表,但它应该在条件(在我的示例中,属性 a
等于 None
) 被发现。
在上面的例子中,这个算法的答案应该是 3。
最佳答案
使用生成器表达式和 next
:
next((i for i, item in enumerate(l) if item.a is None), None)
如果没有找到这样的项目,这将返回 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
关于Python:在符合给定条件的第一个对象的列表中查找位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448049/