计算python中的值的数量

时间:2013-12-02 12:40:44

标签: 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。 我知道count函数计算所有外观。 我怎么能这样做,但是没有循环?当我已经处于两个循环中时,我想要这个,并且不想添加另一个循环。

谢谢。

1 个答案:

答案 0 :(得分:10)

使用list.countslicing

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