我有一个按升序排列的浮点值列表。我想在列表中找到m个等距值和它们的索引。你知道吗
list = [2,3,3.2,3.5,4.1, 6.2, 7.3, 8.4, 9.5, 10.6, 12.1, 14.2, 16.3, 18.4, 20]
我想在上面的列表中找到4个最小值和最大值之间的等距值。另外,我想找到他们的索引位置。你知道吗
min = 2
max = 20
dif = 20-2 = 18
find_val = [2+1*(18/5), 2+2*(18/5), 2+3*(18/5), 2+4*(18/5)]
find_val = [5.6, 9.2, 12.8, 16.4]
我想在find_val
中找到最接近的值。另外,我想知道他们的指数位置。你知道吗
我期待以下输出:
result_list = [6.2, 9.5, 12.1, 16.3]
result_idx = [5, 8, 10, 12]
所以这里有一个函数来做它,它排除了列表中的最小值和最大值:
这个函数的主要部分是
min(map(lambda x: [x[0], abs(value-x[1])], indexed_list), key=lambda x: x[1])[0]
我们映射将索引列表中的每个元素转换为它和我们试图找到的值之间的绝对差值。然后我们找到列表的最小值(最接近的元素)。因为我们将索引附加到每个元素(基于它在主列表中的位置),所以我们可以在主列表中查找实际值(因为它刚刚用映射进行了转换。)这就是我们最后返回时发生的情况。我们还可以直接返回out索引。你知道吗
使用如下函数:
相关问题 更多 >
编程相关推荐