假设有这样1组数据:data=[10,11,23,14,45,23,4,5,20,34,29,42,52,7,57]其最大值为57,而最小值为3,现在想将其分为5组,每组的取值范围为11。即数值在0-11为1组,数值在11-22为另外1组,以此类推。现在希望得到类似如下的结果:[10,11,4,5,7][23,14,23,20][34,29][45,42][52,57]如何使用最少的for或while循环实现上述的结果。
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
如果真像你说的0-11,11-22这样类推出去,你给出的结果是错误的fromitertoolsimportgroupbydata=[10,11,23,14,45,23,4,5,20,34,29,42,52,7,57]data.sort()fork,gingroupby(data,key=lambdax:(x-1)/11):print'{}-{}'.format(k*11,(k+1)*11),list(g)#得出的结果应该是:0-11[4,5,7,10,11]11-22[14,20]22-33[23,23,29]33-44[34,42]44-55[45,52]55-66[57]
暮色呼如
TA贡献1853条经验 获得超9个赞
#!/usr/bin/rubydata.each.inject({}){|h,n|(h[n/11]||=[])&&h[n/11]<给出的需求分类标准有点问题,所以根据需求可以自己改一下.
添加回答
举报
0/150
提交
取消