Python 根据范围将随机数字列表分组

Python 根据范围将随机数字列表分组,python,list,sorting,Python,List,Sorting,提前感谢您的建议! 我有一组随机数字,需要根据它们的范围进行分组。。。我需要一些建议如何做这件事…提前谢谢 因此,我认为代码的工作原理如下: 请列出100个从0到1000的随机数 将范围(从0-1000)分成x组(比如10组:0-100100-200、200-300等) 因为我在这个名单上 测试其是否在第1组中 如果为true,则将其添加到列表中 如果不是,则测试连续组 问题是组的数量应该是一个可以调整的变量,随后的列表应该根据范围的划分进行相应的更新 import random as r #c

提前感谢您的建议! 我有一组随机数字,需要根据它们的范围进行分组。。。我需要一些建议如何做这件事…提前谢谢

因此,我认为代码的工作原理如下: 请列出100个从0到1000的随机数 将范围(从0-1000)分成x组(比如10组:0-100100-200、200-300等) 因为我在这个名单上 测试其是否在第1组中 如果为true,则将其添加到列表中 如果不是,则测试连续组

问题是组的数量应该是一个可以调整的变量,随后的列表应该根据范围的划分进行相应的更新

import random as r
#create list of random integers
ranInteger = []

#length of list of random integers
for i in range (10):
    ranInt = r.randint(0,1000)
    ranInteger.append(ranInt)
print "ranInteger =", ranInteger

#find bounds of random list of integers
maxL = max(ranInteger)
minL = min(ranInteger)
print "maxL =", maxL
print "minL =", minL  

#find range of random list of integers
rangeL = maxL - minL
print "rangeL =", rangeL 

#divide range to create grouping value
divRange = 10
grpValue = (rangeL / divRange)
print "grpValue =", grpValue 

#make List of grouping values
grpL =[] 
r2 = range (minL, maxL, int (grpValue))
grpL.append (r2)
print "grpL =", grpL

#tests each number
indexl = []
for j in ranInteger:
    #test each range
    if i >= ranInteger[s] and i< ranInteger [s+1]) or (s==0)):
print indexl
#to be honest I have no idea how to sort this list into different groups
#and to have the lists with groups update if the group division is changed 
#how can I dynamically create lists based on the value of other objects?
#so i can say divRange = 10 make 10 lists with values grouped in there 
#but if the user changes this divRange = 20 then it automatically makes 20 
#lists with new groups contained within
# I would also like these same lists but with the index of the grouped items 
将随机导入为r
#创建随机整数列表
拉尼特格=[]
#随机整数列表的长度
对于范围(10)内的i:
ranInt=r.randint(01000)
ranInteger.append(ranInt)
打印“ranInteger=”,ranInteger
#求随机整数列表的界
最大值=最大值(拉尼特格)
最小值=最小值(拉尼特格)
打印“maxL=”,maxL
打印“minL=”,minL
#查找随机整数列表的范围
范围=最大值-最小值
打印“rangeL=”,rangeL
#划分范围以创建分组值
divRange=10
GRP值=(范围/divRange)
打印“grpValue=”,grpValue
#列出分组值
grpL=[]
r2=范围(最小值、最大值、整数(GRP值))
grpL.append(r2)
打印“grpL=”,grpL
#测试每个数字
indexl=[]
对于ranInteger中的j:
#测试每个范围
如果i>=ranInteger[s]和i
而不是实际的数字


谢谢!!!-解决这类问题的通常方法是编写一个函数来完成这项工作,并使用不同的输入参数调用该函数。像这样:

def make_bins(x_in, n_bins):  
    """
    x_in is a list of numbers
    n_bins is how many bins to separate x into
    returns a list of length of n_bins, each element of which is a list
    """
    x_min = min(x_in)
    x_max = max(x_in)
    x = [[] for _ in range(n_bins)]
    for a in x_in:
        # compute the bin number for value a
        n = int(float(a - x_min) / (x_max - x_min + 1.0) * n_bins)
        x[n].append(a)
    return x  # x is a binned list of elements from x_in

我已经忽略了某些可能的问题,比如定义垃圾箱边界时的舍入。但它适用于任何长度的列表,列表中的项目不必是整数。

我觉得这有点不够具体。你能举例说明输入/输出吗?分组是基于范围,即
0-1000
还是基于实际值?i、 例如,如果我们选择0-1000范围内的10个随机数,那么我们可能会得到类似于
[4104653442214336026810861583]
,其中min/max是
(61583)
,在这种情况下,我们是否会基于此来划分10个组?作为一个补充,您的for循环生成范围内的
N
随机数可以替换为
random.sample(范围(开始,停止+1),N)
假设您要选择包含范围内的整数
[start,stop]
谢谢大家的宝贵反馈!