2

の配列がある場合

g = ['hi']

それで

'hi' in g

戻りますTrue

インスタンス化されたクラスを配列に入れるとどうなりますか。

g.append(MyClass())

配列にこのクラスのオブジェクトが含まれているかどうかを確認するにはどうすればよいですか。

MyClass in g

戻り値False

4

3 に答える 3

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
于 2012-11-11T20:29:53.950 に答える
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
于 2012-11-11T20:29:14.730 に答える
1
any(isinstance(x, MyClass) for x in g)
于 2012-11-11T20:29:28.977 に答える