如何快速计算二进制列表中 0(s) 的数量? [复制]
Posted
技术标签:
【中文标题】如何快速计算二进制列表中 0(s) 的数量? [复制]【英文标题】:How to quickly count number of 0(s) in a binary list? [duplicate] 【发布时间】:2013-02-15 16:04:19 【问题描述】:对于像[0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0]
这样的数组,有没有一种快速的方法可以返回0(s)
的数量,在示例中为5
?谢谢!
【问题讨论】:
这里和网上有很多重复... 【参考方案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 - 从好的方面来说 - 你不会很快忘记它;)以上是关于如何快速计算二进制列表中 0(s) 的数量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等。 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。 给定一个特殊的二进制序列 S,以