将最接近的项返回到列表中的给定值及其索引

时间:2015-08-01 04:21:01

标签: python python-2.7

我找到了以下一个代码,用于在列表a中搜索最接近11.1的值,例如:a =(1,2,3,4,5,6,7,8,9,10,11,12)

min(enumerate(a), key=lambda x: abs(x[1]-11.1))

代码如何选择正确的索引?有没有更好的实施?

1 个答案:

答案 0 :(得分:1)

每次迭代中的

enumerate()函数返回一个元组,其中第一个元素是索引,第二个元素是列表的实际元素。

然后你找到密钥所在的最小值 - abs(x[1] - 11.1) - 它给出了元素和11.1之间的绝对差值。

显示枚举行为的示例 -

>>> l =  [10,11,12]
>>> a = enumerate(l)
>>> next(a)
(0, 10)
>>> next(a)
(1, 11)
>>> next(a)
(2, 12)