您有一个很好的方法可以计算Sugar
中goblet
的数量吗?
class Sugar:pass
class Milk:pass
class Coffee:pass
goblet = [Sugar(), Sugar(), Milk(), Coffee()]
sugar_dosage = goblet.count(Sugar) #Doesn't work
答案 0 :(得分:5)
您可以将generator expression与sum
和isinstance
:
sum(isinstance(x, Sugar) for x in goblet)
# or
sum(1 for x in goblet if isinstance(x, Sugar))
此外,list.count
无效,因为该方法正在测试列表中等于 Sugar
的项目数。换句话说,它基本上为列表中的每个项目执行item==Sugar
。这是不正确的,因为您想要测试每个项目的类型,这是isinstance
所做的。