2017-08-09 77 views
1

分类Python的 - 得到最接近的整数给出一个整数列表简谱

values = [7, 9, 10, 11] 

如果我想找到最接近值

value = 0 

我可以简单地使用

closest_value = min(values, key=lambda x:abs(x-value)) 

并获得

[out]: 7 

然而,在我的情况values相当于简谱的整数,像这样:

notation_values = {'C':0, 'C#':1, 'D':2, 'Eb':3, 'E':4, 'F':5, 'F#':6, 'G':7, 'Ab':8, 'A':9, 'Bb':10, 'B':11} 

在这种情况下,0接近11,因为,12会,只有一个八度较高的是'C'一次。

根据这个逻辑我怎样才能得到最接近的整数value

+0

听起来就像你想要的最接近的值小于你的索引。 IE:最接近1的值是0,最接近0的值是11,取决于你的范围。在这种情况下,最接近价值的指数应该是“价值 - 1%12”。 –

+0

11是否接近0而不是13? –

回答

2

这听起来像你想要的最接近的值是而不是你的索引。 IE:最接近1的值是0,最接近0的值是11,依此类推(基于你的范围[0-11])。

试试这个:

closest_value = (value - 1) % 12 

您应该能够使用该结果为指标,你notation_values因此可以判断相应的音符。

相关问题