【问题标题】:Some numbers are skipped in counting number of values greater and less than certain values in a list在计算大于和小于列表中某些值的值的数量时,会跳过一些数字
【发布时间】:2021-03-04 08:19:19
【问题描述】:

我在计算大于start(最初为 0) 且小于 end(最初为 10) 某些值的值时遇到问题一个列表。

列表包含 0-110 范围内的 12500 个 浮点数。我想计算列表中有多少数字在 0-10 范围内,然后是 10-20, 20-30, (...), 100-110

我已经实现了一个带有列表理解的 for 循环:

all_nums = [] # contains 12_500 float numbers

nums_counted = []
start = 0
end = 10
for x in range(11):
    count = len([x for x in to_int if start < x < end])
    nums_counted.append(count)
    start = start + 10
    end = end + 10

问题是len(all_nums) = 12500sum(nums_counted) = 12492,也应该等于12500。

我不知道我做错了什么以及那 8 个数字在哪里消失了

【问题讨论】:

  • 我猜这些是 0、10、20 等,因为它们永远不会被计入任何类别。您可能希望将其中一个&lt; 更改为&lt;=。此外,您真的不应该每次都遍历整个列表,您可以通过一次遍历列表来实现您的目标,这样效率更高
  • 啊,是的,如此简单。谢谢卢卡斯!

标签: python python-3.x for-loop list-comprehension


【解决方案1】:

你可以将 int 除以 10


> from collections import Counter
> 
> l = [0.0, 0.1, 6.1, 11.4, 19.2, 20.9, 40.1]
> 
> d = Counter()
> 
> for val in l:
>     binn = val//10
>     d[binn] += 1
> 
> print(l) 
> print(d.items())
[0.0, 0.1, 6.1, 11.4, 19.2, 20.9, 40.1]
dict_items([(0.0, 3), (1.0, 2), (2.0, 1), (4.0, 1)])

在这种情况下 0.0 --> 0-10 范围内有 3 个计数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    相关资源
    最近更新 更多