微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算列表中的整数范围

如何解决如何计算列表中的整数范围

我正在尝试找出列表中数字的概率。我有一个列表说:

a =[62.0,0.0,67.0,69.0,76.0,70.0,73.0,56.0,80.0,59.0,65.0,78.0,43.0,87.0]

我想找出 0-25,25-50,50-100 和 100 以上的数字的概率。 我试过用这个:

a.count(range(25))/len(a)
a.count(range(25,50))/len(a)

但是没有得到所需的结果。 有人可以帮忙解决这里的问题吗?

解决方法

a.count(range(25)) 给出 0,因为 range(25) 不是 a 的元素。您要计算的是 range(25)a 的每个单独元素的出现次数,例如:

>>> sum(a.count(i) for i in range(25))
9

或者,您可以遍历 a 的每个元素并检查它是否包含在范围内(我认为这会快一点,因为理论上您不需要遍历范围来测试是否有东西):

>>> sum(i in range(25) for i in a)
9
,

添加到@Samwise 的回答中,因为 OP @Kshtj 在评论中说他们不想要太多的代码行......你可以简单地写一个 functionlambda 来获得频率因此,这将更容易扩展:

get_freq = lambda a,low,high: sum(low <= i < high for i in a) / len(a)

>>>get_freq(a,25)
0.391304347826087
>>>get_freq(a,50,100)
0.5652173913043478
,
>>> len(list(filter(lambda x: x<=25,a)))/len(a)
0.391304347826087
,
a = [62.0,0.0,67.0,69.0,76.0,70.0,73.0,56.0,80.0,59.0,65.0,78.0,43.0,87.0]

print("0-25:",len(list(filter(lambda x: 0 <= x <= 25,a))) / len(a))
print("25-50:",len(list(filter(lambda x: 25 < x <= 50,a))) / len(a))
print("50-100:",len(list(filter(lambda x: 50 < x <= 100,a))) / len(a))
print(">100:",len(list(filter(lambda x: x > 100,a))) / len(a))

输出

0-25: 0.391304347826087
25-50: 0.043478260869565216
50-100: 0.5652173913043478
>100: 0.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。