计算Python列表中的类实例

时间:2015-04-04 19:35:39

标签: python python-2.7 python-3.x count instances

我想知道计算特定对象出现次数的最佳和最快方法(用户定义的类实例)在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 方式吗?

2 个答案:

答案 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))