2015-04-04 80 views
3

我想知道计算特定对象(用户定义的类实例)在Python列表中发生的次数的最佳和最快方法在Python列表中计数类实例

举例来说,如果我们有一个类叫做MyClass

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 

但有更好更Python的方式来做到这一点?

回答

3

你可以做这种使用sum计数,因为True等于一和False等于零:

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

或'总和(1代表myList中的x,如果isinstance(x,MyClass))''。作为一名18岁的Python用户,我无法决定哪个更好或更“pythonic”。 – 2015-04-04 20:11:34

+0

非常感谢您的回答!使用Pythons内置的'sum()'函数是一个非常聪明的想法:) – elegent 2015-04-07 08:50:05

+0

@TerryJanReedy:谢谢你指出这一点。 :) – elegent 2015-04-07 08:52:25

0

这听起来像你问的filter

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