我有一个数字列表,我希望以某种方式将其转换为单元步进形式。
这就是我的界限
[367.3090551181102, 371.73179133858264, 376.1545275590551, 380.5772637795276, 385.0]这是我的数据
[367.3090551181102, 370, 370, 370, 370, 370, 370, 370, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 368, 369, 368, 368, 368, 368, 368, 368, 368, 368, 369, 370, 367.3090551181102, 367.3090551181102, 367.3090551181102, 370, 368, 373, 369, 371, 368, 367.3090551181102, 367.3090551181102, 367.3090551181102, 369, 367.3090551181102, 372, 367.3090551181102, 368, 368, ...]我想要做的是,基本上把数据中的每一个数字加起来,直到边界。数字介于下边界和上边界之间。
假设号码是370,我想把这个算到371.73.既然是367.309.还有371.73..。或者是381,那么我想把它整到370.57.
这是我的代码,但我有点困惑
def unit_step(data,boundaries):
us = []
for d in data:
if(boundaries[0] < d < boundaries[1]):
us.append(rounder(boundaries[0],boundaries[1],d))
elif(boundaries[1] < d < boundaries[2]):
us.append(rounder(boundaries[1],boundaries[2],d))
elif(boundaries[2] < d < boundaries[3]):
us.append(rounder(boundaries[2],boundaries[3],d))
elif(boundaries[3] < d < boundaries[4]):
us.append(rounder(boundaries[3],boundaries[4],d))
return us我试着在另一个循环中寻找循环,但没能成功。
我错在哪里,或者与双for循环相比,它是一种有用的方法?
发布于 2021-04-29 19:27:43
您可以在min中使用列表理解来检查来自boundaries的最近(高值或低值)值,并相应地替换来自data的值。
>>> [min(boundaries, key=lambda i: abs(i - value)) for value in data]
[367.3090551181102, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 371.73179133858264, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102]https://stackoverflow.com/questions/67323852
复制相似问题