计算列表中的类型对象

Eli*_*ane 3 python class list instances python-3.x

你有一个很好的方法来计算Sugar我的数量goblet吗?

class Sugar:pass
class Milk:pass
class Coffee:pass

goblet = [Sugar(), Sugar(), Milk(), Coffee()]
sugar_dosage = goblet.count(Sugar) #Doesn't work
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 5

您可以使用生成器表达式sumisinstance:

sum(isinstance(x, Sugar) for x in goblet)
# or
sum(1 for x in goblet if isinstance(x, Sugar))
Run Code Online (Sandbox Code Playgroud)

此外,list.count由于该方法正在测试列表中有多少项等于 ,因此无效Sugar.换句话说,它基本上item==Sugar是为列表中的每个项目做的.这是不正确的,因为你想测试每个项目的类型,这是什么isinstance.