python - 计算python中值的数量

标签 python list count

我有一个如下所示的列表:

Lux = ([ 0 0 0 0 0 120 120 120 120 120 240 240 240 240 240 0 0 0 0 0 120 120 120 120 120])

我想数一数我有多少个零,但只能从第 14 位算起,直到第 16 位 在这种情况下,答案将是 2。 我知道计数函数会计算所有外观。 我该怎么做,但没有循环?当我已经处于两个循环中并且不想添加另一个循环时,我想要这个。

谢谢。

最佳答案

使用list.count切片:

>>> lis = [0, 0, 0, 0, 0, 120, 120, 120, 120, 120, 240, 240, 240, 240, 240, 0, 0, 0, 0, 0, 120, 120, 120, 120, 120]
>>> lis[14:].count(0)
5
>>> lis[14:17].count(0)
2

另一种选择是使用 sum 和生成器表达式,但与 list.count 相比,这会非常慢:

>>> sum(1 for i in xrange(14, len(lis)) if lis[i]==0)
5
>>> sum(1 for i in xrange(14, 17) if lis[i]==0)
2

时序比较:

In [4]: lis = [0, 0, 0, 0, 0, 120, 120, 120, 120, 120, 240, 240, 240, 240, 240, 0, 0, 0, 0, 0, 12
0, 120, 120, 120, 120]*10**5                                                                     

In [5]: %timeit lis[14:].count(0)                                                                
10 loops, best of 3: 64.7 ms per loop

In [6]: %timeit sum(1 for i in xrange(14, len(lis)) if lis[i]==0)                                
1 loops, best of 3: 307 ms per loop

关于python - 计算python中值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20328610/

相关文章:

c++ - [] std::list 的运算符?

带有 GROUP BY 子句的 COUNT 的 MySQL SUM

java - 如何计算每个复选框中的所有真值和假值

python - 当同时按下 3 个以上的键时,PyGame 不接收事件

python - 如何使用 Python Setuptools 指定脚本的执行权限

java - 迭代器和Listiterator的区别?

Java/Android - 两个 Collections.sort 组合(首先按 int,然后按名称)

php - 数据库中的 PDO 计数表

具有 "@"(矩阵乘法)的对象的 Python 类型提示

python - 我是否再次低估了 NumPy 的力量?