【问题标题】:How to quickly count number of 0(s) in a binary list? [duplicate]如何快速计算二进制列表中 0(s) 的数量? [复制]
【发布时间】:2013-02-15 16:04:19
【问题描述】:

对于像[0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0] 这样的数组,有没有一种快速的方法可以返回0(s) 的数量,在示例中为5?谢谢!

【问题讨论】:

  • 这里和网上有很多重复...

标签: python


【解决方案1】:

您可以通过使用数组将速度提高 100 倍(这仅对大型列表很重要)...

这应该比my_list.count(0)快100倍:

(my_array==0).sum()

但是,如果您的数据已经排列为 numpy 数组(或者您可以在创建时将其放入 numpy 数组),则它只会有所帮助。否则转换my_array = np.array(my_list) 会浪费时间。

【讨论】:

    【解决方案2】:

    您的选择,让您在晚上入睡:

    l = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
    
    print l.count(0)
    # or maybe:
    print len(filter(lambda a: a == 0, l))
    # or maybe:
    print len([0 for x in l if x==0])
    

    【讨论】:

      【解决方案3】:
      li = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
      print len(li) - sum(li)
      

      【讨论】:

        【解决方案4】:
        In [16]: l = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
        
        In [17]: l.count(0)
        Out[17]: 5
        

        【讨论】:

          【解决方案5】:

          使用list.count:

          your_list.count(0)
          

          还有帮助:

          >>> help(list.count)
          Help on method_descriptor:
          
          count(...)
              L.count(value) -> integer -- return number of occurrences of value
          

          【讨论】:

          • 问这个问题我感到很惭愧。
          • @Rock well - 从好的方面来说 - 你不会很快忘记它;)
          猜你喜欢
          • 2021-03-10
          • 2021-12-08
          • 2016-12-20
          • 1970-01-01
          • 2013-10-31
          • 1970-01-01
          • 1970-01-01
          • 2018-05-20
          • 2019-01-06
          相关资源
          最近更新 更多