python - 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 ,然后将 -6.6 in[0.21, -6.6] 与 -1.22 in [0.20, -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")
请帮助我提供一个代码来实现这一点。
解决方案
你可以这样做:
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
. 然后我们只需对列表中的每个项目执行此操作。
推荐阅读
- python - Scrapy - 未找到蜘蛛
- gradle - 根据 Gradle 文件动态设置 TeamCity 版本号?
- c# - NLog - 如何打印子类的属性值
- unity3d - 如何获取变换的 X 位置并将其转换为 Unity2D 中的浮点数
- vb.net - 显示错误时的当前参数列表
- python-wheel - 如何使用 Azure Synapse Analytics 将自定义 python 库导入 apache spark 池?
- android - 在 android/flutter 中实现一个粘性服务
- javascript - postgres - windows docker容器的密码身份验证失败
- javascript - 如何制作类似于推特帖子的数字增量动画,如计数器
- ruby-on-rails - 如何在没有矩阵格式信息的情况下截断 ActionText 输出