如何快速计算二进制列表中 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,以

实序列快速傅里叶变换

如何快速计算字符串中连续单个字符的最大数量?

计算列表python中的列表数量[重复]

LeetCode 696. 计数二进制子串 [Count Binary Substrings (Easy)]