查找类对象是否在数组/列表中

时间:2012-11-11 20:27:45

标签: python python-2.7

如果我有一个

数组
g = ['hi']

然后

'hi' in g

返回True

如果我将实例化的类放入数组中该怎么办?

g.append(MyClass())

如何查找数组是否包含此类的对象。

MyClass in g

返回False

3 个答案:

答案 0 :(得分:3)

使用isinstance()any()

In [95]: class A:pass

In [96]: lis=[A()]

In [97]: any(isinstance(x,A) for x in lis)
Out[97]: True

In [98]: lis=[1,2,3]

In [99]: any(isinstance(x,A) for x in lis)
Out[99]: False

答案 1 :(得分:1)

试试这个:

MyClass in [type(x) for x in g]

这只会找到确切类型MyClass的对象;它不会找到从MyClass派生的类的对象。为此,请尝试使用isinstance()

的其他答案之一

示例:

>>> class Foo(object): pass
...
>>> g = [1, 2, Foo(), 4]
>>> g
[1, 2, <__main__.Foo object at 0x7f59552ef750>, 4]
>>> Foo in [type(x) for x in g]
True

答案 2 :(得分:1)

any(isinstance(x, MyClass) for x in g)