我想知道计算特定对象出现次数的最佳和最快方法(用户定义的类实例)在Python列表中?< / p>
例如,如果我们有一个名为MyClass
class MyClass:
"""A simple example class"""
i = 42
def foo(self):
return “Hello world”
和列表myList
由六个元素组成:
myList = [MyClass(), MyClass(), 2, 3, 'egg', MyClass()]
我们可以通过迭代MyClass
并使用isinstance()
函数来计算对象的出现次数,这是myList
实例 :
count = 0
for item in myList:
if isinstance(item, MyClass):
count += 1
但有更好的或更多pythonic 方式吗?
答案 0 :(得分:3)
您可以使用sum
进行此类计数,因为True
等于1且False
等于零:
count = sum(isinstance(x, MyClass) for x in myList)
答案 1 :(得分:0)
听起来你要求filter
:
count = len( filter(lambda i: isinstance(i, myClass), myList))