Python 计数给定范围内数字的出现次数
我的目标是将num_lst中的数字频率计算到num_range中的范围。并将输出显示到字典,其中key是范围,value是num_lst范围内数字的频率 我看过很多帖子,大多数都是用numpy或熊猫来解决的。然而,我想找到传统的方法来解决这个问题,而不使用np和pd。谁能告诉我正确的方向吗Python 计数给定范围内数字的出现次数,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我的目标是将num_lst中的数字频率计算到num_range中的范围。并将输出显示到字典,其中key是范围,value是num_lst范围内数字的频率 我看过很多帖子,大多数都是用numpy或熊猫来解决的。然而,我想找到传统的方法来解决这个问题,而不使用np和pd。谁能告诉我正确的方向吗 num_range = [(0.0, 20.0), (20.0, 40.0), (40.0, 60.0), (60.0, 80.0), (80.0, 100.0)] num_lst = [x for x in
num_range = [(0.0, 20.0), (20.0, 40.0), (40.0, 60.0), (60.0, 80.0), (80.0, 100.0)]
num_lst = [x for x in range(100)]
#Preferred output
frequency_dict ={(0.0, 20.0):20, (20.0, 40.0):20,
(40.0, 60.0):20,(60.0, 80.0):20,
(80.0, 100.0):20}
如果所有范围都使用可以利用集合重叠的整数,
seta.intersection(setb)
给出两个集合之间的所有公共元素,那么其中的len
表示有多少个元素是公共的:
num_range = [(0, 20), (20, 40), (40, 60), (60, 80), (80, 100)]
num_lst = set(range(100))
frequency_dict = {}
for a,b in num_range:
frequency_dict[a,b] = len(num_lst.intersection(range(a,b)))
print(frequency_dict)
在更一般的情况下,您可以在范围上使用嵌套循环,并查看它是否位于每个类别之间:
num_range = [(0, 20), (20, 40), (40, 60), (60, 80), (80, 100)]
num_lst = range(100)
frequency_dict = dict.fromkeys(num_range, 0) # initial dictionary has 0 in all entries
for a,b in num_range:
for i in num_lst:
if a<=i<b:
frequency_dict[a,b] += 1
print(frequency_dict)
num_range=[(0,20)、(20,40)、(40,60)、(60,80)、(80100)]
数值=范围(100)
frequency_dict=dict.fromkeys(num_range,0)#初始字典中的所有条目都为0
对于数量范围内的a、b:
对于数量中的i:
如果aif范围总是有一个0的步长,那么它不就是num\u range[I][1]-num\u range[I][0]
?或者,我想你们想要一个通用的解决方案,当范围可能超出范围或者范围有一个台阶时?你们尝试过什么,你们如何定义边界?
frequency_dict = {(a,b):sum(a<=i<b for i in num_lst) for a,b in num_range}