猿问

Python中两个列表中最近或最近的值

我有两个清单


Calculated_list:  [[0.99, -9.58], [0.012, -9.88], [0.22, -9.56], [0.44, -6.6], 

                    [0.55, -7.7], [0.21, -6.6]]

Output_list:  [[0.20, -1.22], [0.22, -1.44], [0.1, -1.55], [0.43, -1.88], [0.34, 

                           1.9], [0.33, 0.2]]

我需要比较并找到每个输出列表列表中第一个值的最接近值与每个计算列表列表中的第一个值。例如:我需要将 [0.20,-1.22] 中的 0.20 与 0.99,0.012,0.22,0.44,0.55,0.21 进行比较。等等。如果 0.20 的任何最接近的值在列表中,即;0.20 最接近 0.21。然后取相应列表中的第二个值,即;-6.6 ,然后将 [0.21, -6.6] 中的 -6.6 与 [0.20, -1.22] 中的 -1.22 相乘。


我尝试过的:


for i in range(len(req_outlist)):

for j in range(len(reqlist)):

    #print(req_outlist[j])

    if (float(req_outlist[i][0])-float(reqlist[j][0]))==0:

        print(reqlist[j][0])


    else:

        print(" Closest Value")

请帮我提供一个代码来实现这一点。


慕无忌1623718
浏览 356回答 2
2回答

吃鸡游戏

你可以这样做:calculated_list = [[0.99, -9.58], [0.012, -9.88], [0.22, -9.56], [0.44, -6.6],     [0.55, -7.7], [0.21, -6.6]]output_list = [[0.20, -1.22], [0.22, -1.44], [0.1, -1.55], [0.43, -1.88], [0.34, 1.9],     [0.33, 0.2]]def FindClosest(input_list, input_point):    output_value = min(map(lambda x: [abs(x[0] - input_point[0]), x[1]], input_list), key = lambda k: k[0])    return [ input_point[0], input_point[1] * output_value[1] ]result = list(map(lambda x: FindClosest(calculated_list, x), output_list))print(result)>>> [[0.2, 8.052], [0.22, 13.7664], [0.1, 15.314000000000002], [0.43, 12.408], [0.34, -12.54], [0.33, -1.32]]本质上,这些代码所做的就是遍历列表并将您提交的值input_point与该索引的子列表中的第一项之间的差异与当前的最小差异进行比较。如果小于,则计算该值并更新最小差值。最后,它被附加到result. 然后我们只为列表中的每个项目执行此操作。
随时随地看视频慕课网APP

相关分类

Python
我要回答