检查实例是否存在于列表中。

11

是否有内置函数可以确定类的实例是否存在于列表中?
目前我是通过一个综合来实现的。

>>> class A:
...     pass
...     
>>> l1=[5,4,3,A(),8]
>>> e=[e for e in l1 if isinstance(e,A)]
1个回答

19

any(iterable)

如果可迭代对象中有任何一个元素为真,则返回True。如果可迭代对象为空,则返回False

>>> class A(object): # subclass object for newstyle class (use them everywhere)
        pass

>>> l1=[5,4,3,A(),8]
>>> any(isinstance(x, A) for x in l1)
True

通过使用生成器表达式

(isinstance(x, A) for x in l1)

any 结合使用时,any 可以短路并在找到第一个 True 值时返回 True (不像列表推导式那样)。


3
你可能想要提到使用生成器的好处是,当它找到一个True值时,any会短路并立即返回True - mgilson
我建议您添加到任何文档的链接:http://docs.python.org/2/library/functions.html#any - Zac
很酷,Python建议尽可能使用内置函数。 - Tanky Woo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接