Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算列表中的整数范围_Python_List_Count_Range_Probability - Fatal编程技术网

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

Python 如何计算列表中的整数范围,python,list,count,range,probability,Python,List,Count,Range,Probability,我试图找出列表中数字的概率。我有一个列表说: a =[62.0, 0.0, 67.0, 69.0, 0.0, 76.0, 0.0, 0.0, 69.0, 70.0, 73.0, 0.0, 0.0, 56.0, 80.0, 0.0, 59.0, 65.0, 78.0, 0.0, 43.0, 0.0, 87.0] 我想找出0-25,25-50,50-100和大于100的概率。 我试着用这个: a.count(range(25))/len(a) a.count(range(25,50))/len(a

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

a =[62.0, 0.0, 67.0, 69.0, 0.0, 76.0, 0.0, 0.0, 69.0, 70.0, 73.0, 0.0, 0.0, 56.0, 80.0, 0.0, 59.0, 65.0, 78.0, 0.0, 43.0, 0.0, 87.0]
我想找出0-25,25-50,50-100和大于100的概率。 我试着用这个:

a.count(range(25))/len(a)
a.count(range(25,50))/len(a)
但我没有得到所需的结果。 有人能帮忙解决这里的问题吗?

a.countrange25给出0,因为range25不是a的元素。您要计算的是范围25内每个单独元素的出现次数,例如:

或者,您可以迭代a的每个元素,并检查它是否包含在范围内。我认为这会快一点,因为从理论上讲,您不需要迭代某个范围来测试其中是否有内容:

>>> sum(i in range(25) for i in a)
9
a、 countrange25给出0,因为range25不是a的元素。您要计算的是范围25内每个单独元素的出现次数,例如:

或者,您可以迭代a的每个元素,并检查它是否包含在范围内。我认为这会快一点,因为从理论上讲,您不需要迭代某个范围来测试其中是否有内容:

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

>>>lenlistfilterlambda x:x>>lenlistfilterlambda x:x添加到@Samwise的答案中,因为OP@Kshtj在一篇评论中说他们不需要太多的代码行。。。您只需编写一个函数或lambda即可获得频率,这样更易于扩展:

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

>>>get_freq(a, 0, 25)
0.391304347826087
>>>get_freq(a, 50, 100)
0.5652173913043478

添加到@Samwise的答案中,因为OP@Kshtj在评论中说他们不需要太多的代码行。。。您只需编写一个函数或lambda即可获得频率,这样更易于扩展:

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

>>>get_freq(a, 0, 25)
0.391304347826087
>>>get_freq(a, 50, 100)
0.5652173913043478

抛出一个错误:未定义计数。我在11分钟前编辑了它抛出一个错误:未定义计数。我在11分钟前编辑了它是的,它们都按预期工作,但是,随着分组的增加,如100-150、150-200等等,代码行将过多。但就目前而言,在我的情况下,这非常有效,谢谢你,先生。用timeit模块测试数字为100000的时间,它们都需要大约3秒钟。第一种方法大约需要3.3秒,第二种方法大约需要3秒。是的,第二种方法速度更快,但100000次运行的0.3秒差异非常小say@Kshtj如果答案是你所需要的,请考虑接受它,这样问题就不会留下答案。[suma.counti代表range 25*r中的i,25*r+1代表range 10中的r]或诸如此类。@Samwise如果您担心这一点,sum0是的,它们都能按预期工作,但是,随着分组的增加,如100-150、150-200等等,代码行将太多。但就目前而言,在我的情况下,这非常有效,谢谢你,先生。用timeit模块测试数字为100000的时间,它们都需要大约3秒钟。第一种方法大约需要3.3秒,第二种方法大约需要3秒。是的,第二种方法速度更快,但100000次运行的0.3秒差异非常小say@Kshtj如果答案是你所需要的,请考虑接受它,这样问题就不会留下答案。[suma.counti代表我在25*r范围内,25*r+1代表r在10范围内]或其他任何东西。@Samwise如果你担心的话,sum0
get_freq = lambda a, low, high: sum(low <= i < high for i in a) / len(a)

>>>get_freq(a, 0, 25)
0.391304347826087
>>>get_freq(a, 50, 100)
0.5652173913043478