【问题标题】:Count number of values in python计算python中值的数量
【发布时间】:2013-12-02 12:40:43
【问题描述】:

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

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函数计算所有的外观。 我该怎么做,但没有循环?当我已经在两个循环中并且不想添加另一个循环时,我想要这个。

谢谢。

【问题讨论】:

  • 这不是 python 列表,仅供参考。
  • 为什么不在数数之前先对列表进行切片?类似count(Lux[14:16])
  • Evert,我想要这样的东西: valueInLux = Lux[i] #Lux[i] = 0 LuxNumberOfRows = Lux.count(valueInLux) 其中 Lux 是列表,但为此我只想从 14 点运行到 16 点。

标签: python list count


【解决方案1】:

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

【讨论】:

  • list.count 和切片正是我所需要的!谢谢!
猜你喜欢
  • 2015-05-14
  • 1970-01-01
  • 2020-04-04
  • 2019-04-24
  • 1970-01-01
  • 2012-09-27
  • 2011-05-07
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多