我想「圓圓」數值的有序列表,這可以在(正極/負極)浮動或整數形式。我不想在輸出中使用相同的值,除非輸入值本身是相同的。我將理想像四捨五入到最接近的5或10,在幅度可能的最高水平進行,並且降下來,直到在相鄰值之間的不匹配。回合Python列表具有唯一值
以下是一些例子就是我在尋找:
[-0.1, 0.21, 0.29, 4435.0, 9157, 9858.0, 10758.0, 11490.0, 12111.9]
結果:
[-0.1, 0.0, 0.25, 5000.0, 9000.0, 10000.0, 11000.0, 11500.0, 12000.0]
這是我到目前爲止有:
def rounder(n, base=1):
base = base * (10 ** (len(str(abs(n))) - len(str(abs(n)))))
return base * round(float(n)/base)
for i in range(len(inp_values)-1):
while True:
a = rounder(inp_values[i], 10**((len(str(abs(int(inp_values[i])))))-(i+1))/2)
b = rounder(inp_values[i+1], 10**((len(str(abs(int(inp_values[i+1])))))-(i+1))/2)
print a, b
if a < b:
break
任何幫助將b非常感謝。
你能解釋一下'0.21 - > 0.0'? –
如果它轉到'0.25',那麼結果將與它的右邊相同。 – user1185790
這是否有真實世界的用例? – uselpa