如何解决如何计算列表中的整数范围
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 在评论中说他们不想要太多的代码行......你可以简单地写一个 function
或 lambda
来获得频率因此,这将更容易扩展:
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 举报,一经查实,本站将立刻删除。