Python:根据第一个列表的最近值索引获取第二个列表对应值
Python实现方案
提供两种常用实现方式,可根据场景选择:
1. 纯原生Python实现(无需安装第三方库)
思路是通过min函数的key参数直接计算每个位置元素与目标值的绝对差,取差值最小的对应索引:
u_determiner = [0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0] u_H = [0.368, 0.303, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301] target = 1.276819 # 计算最小差值对应的索引 min_index = min(range(len(u_determiner)), key=lambda i: abs(u_determiner[i] - target)) result = u_H[min_index] # 输出结果 print("匹配索引:", min_index) print("u_H对应值:", result)
运行后输出结果为:
匹配索引: 5
u_H对应值: 0.301
2. NumPy实现(适合大规模数组,执行效率更高)
如果是处理数据量较大的数组,用NumPy的内置函数性能优势更明显:
import numpy as np u_determiner = np.array([0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0]) u_H = np.array([0.368, 0.303, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301, 0.301]) target = 1.276819 # 取绝对差最小的索引 min_index = np.argmin(np.abs(u_determiner - target)) result = u_H[min_index] print("匹配索引:", min_index) print("u_H对应值:", result)
运行结果和原生实现一致。
注意:如果存在多个元素与目标值的差值完全相同,两种方法都会默认返回第一个匹配元素的索引,符合绝大多数场景的使用需求。
内容的提问来源于stack exchange,提问作者Woj
相关产品推荐
相关产品推荐

