在列表中计算类型对象数量

3

你有没有一种很好的方法来计算我酒杯中的数量?

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

goblet = [Sugar(), Sugar(), Milk(), Coffee()]
sugar_dosage = goblet.count(Sugar) #Doesn't work
1个回答

5
你可以使用 生成器表达式sumisinstance
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的作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接