【问题标题】:Count type objects in a list计算列表中的类型对象
【发布时间】:2015-01-17 19:03:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: python list class python-3.x instances


    【解决方案1】:

    您可以将generator expressionsumisinstance 一起使用:

    sum(isinstance(x, Sugar) for x in goblet)
    # or
    sum(1 for x in goblet if isinstance(x, Sugar))
    

    另外,list.count 不起作用,因为该方法正在测试列表中有多少项目等于 Sugar。换句话说,它基本上是为列表中的每个项目执行item==Sugar。这是不正确的,因为您想测试每个项目的 type,这就是 isinstance 所做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2012-11-23
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      相关资源
      最近更新 更多