2015-04-04 111 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))