在 Python 个列表中计算 class 个实例

Count class instances in a Python list

我想知道计算特定对象出现次数的最佳和最快方法是什么(用户定义的class实例)在 Python 列表中?

例如,如果我们有一个名为 MyClass

class
class MyClass:
    """A simple example class"""
    i = 42
    def foo(self):
        return “Hello world”

和一个列表myList,由六个元素组成:

myList = [MyClass(), MyClass(), 2, 3, 'egg', MyClass()]

我们可以计算对象出现的次数,这是一个MyClass实例通过迭代myList并使用isinstance()函数:

count = 0

for item in myList:
    if isinstance(item, MyClass):
        count += 1

但是有没有更好的更pythonic的方法来做到这一点?

您可以使用 sum 进行这种计数,因为 True 等于一而 False 等于零:

count = sum(isinstance(x, MyClass) for x in myList)

听起来你要的是 filter:

count = len( filter(lambda i: isinstance(i, myClass), myList))