如何快速计算二进制列表中的0(s)数?

时间:2013-03-01 07:45:45

标签: python

使用类似[0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]的数组,是否可以快速返回0(s)的数量,例如5?谢谢!

5 个答案:

答案 0 :(得分:6)

使用list.count

your_list.count(0)

帮助:

>>> help(list.count)
Help on method_descriptor:

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

答案 1 :(得分:2)

In [16]: l = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

你的选择,无论你晚上睡不着什么:

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])

答案 4 :(得分:1)

使用数组(对于大型列表只会变得很重要),你可以将速度提高100倍......

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

(my_array==0).sum()

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