对于像这样的数组[0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
,有没有一种快速的方法来返回示例中的0(s)
数量5
?谢谢!
问问题
4518 次
5 回答
10
使用list.count
:
your_list.count(0)
和帮助:
>>> help(list.count)
Help on method_descriptor:
count(...)
L.count(value) -> integer -- return number of occurrences of value
于 2013-03-01T07:46:33.890 回答
2
In [16]: l = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
In [17]: l.count(0)
Out[17]: 5
于 2013-03-01T07:47:08.803 回答
2
li = [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
print len(li) - sum(li)
于 2013-03-01T08:00:56.307 回答
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])
于 2013-03-01T08:01:01.967 回答
1
您可以通过使用数组将速度提高 100 倍(这仅对大型列表很重要)...
这应该比 : 快 100 倍my_list.count(0)
:
(my_array==0).sum()
但是,如果您的数据已经排列为 numpy 数组(或者您可以在创建时将其放入 numpy 数组),它只会有帮助。否则转换my_array = np.array(my_list)
会消耗时间。
于 2013-03-01T10:45:38.990 回答