关于python:如何快速计算二进制列表中0的数目?

How to quickly count number of 0(s) in a binary list?

本问题已经有最佳答案,请猛点这里访问。

对于类似于[0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]的数组,是否有快速返回0(s)的数目的方法,在示例中是5?谢谢!


使用list.count

1
your_list.count(0)

还有帮助:

1
2
3
4
5
>>> help(list.count)
Help on method_descriptor:

count(...)
    L.count(value) -> integer -- return number of occurrences of value


1
2
3
4
In [16]: l = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]

In [17]: l.count(0)
Out[17]: 5


您可以使用数组(它只对大列表很重要)将速度提高100倍…

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

1
(my_array==0).sum()

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


你的选择,无论什么让你晚上睡觉:

1
2
3
4
5
6
7
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])

1
2
li = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
print len(li) - sum(li)