为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2021-09-14 15:34:57
我有两个清单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")请帮我提供一个代码来实现这一点。
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

你可以这样做:


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. 然后我们只为列表中的每个项目执行此操作。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 355 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信