Python 将浮点范围放入存储箱

Python 将浮点范围放入存储箱,python,range,floating,binning,Python,Range,Floating,Binning,给定5个范围 [(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)] 这相当于: [0.0,0.0] (0.0,0.3] (0.3,0.5) (0.5,0.8] (0.8,1.0) 和输入浮动列表: [0.5293113408538, 0.3105914215541, 0.7748290363338001, 0.7745464933980998, 0.17276995816109997, 0.83335888200110

给定5个范围

[(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)]
这相当于:

  • [0.0,0.0]
  • (0.0,0.3]
  • (0.3,0.5)
  • (0.5,0.8]
  • (0.8,1.0)
和输入浮动列表:

[0.5293113408538,
 0.3105914215541,
 0.7748290363338001,
 0.7745464933980998,
 0.17276995816109997,
 0.83335888200110002,
 0.0]
目标是将浮动存储到上述范围并输出:

[3, 2, 3, 3, 1, 4, 0]
我试过这个:

score_ranges =  [(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)]

x = [0.5293113408538,
 0.3105914215541,
 0.7748290363338001,
 0.7745464933980998,
 0.17276995816109997,
 0.83335888200110002,
 0.0]

binning = []

for i in x:
    for j, (start, end) in enumerate(score_ranges):
        if i == 0:
            binning.append(0)
            break
        elif start < i <= end:
            binning.append(j)
            break
得分范围=[(0,0.),(0,0.3),(0.3,0.5),(0.5,0.8),(0.8,1.0)]
x=[0.5293113408538,
0.3105914215541,
0.7748290363338001,
0.7745464933980998,
0.17276995816109997,
0.83335888200110002,
0.0]
binning=[]
对于x中的i:
对于枚举(分数范围)中的j(开始、结束):
如果i==0:
binning.append(0)
打破

elif start
import bisect

score_ranges =  [0., 0.3, 0.5, 0.8, 1.0]
binning = []

x = [
    0.5293113408538,
    0.3105914215541,
    0.7748290363338001,
    0.7745464933980998,
    0.17276995816109997,
    0.83335888200110002,
    0.0]

for a in x:
    binning.append(bisect.bisect_left(score_ranges, a))