Python 如何实现两个数组间0.01容差的相近数值匹配筛选
实现逻辑
对org_df中的元素按原有顺序遍历,逐个判断calc_df中是否存在元素与当前元素的绝对差值≤0.01的容差阈值,符合条件的元素直接纳入结果数组即可。
完整可运行代码
基础循环写法(可读性更高)
org_df = [2732.64, 2296.35, 1262.28, 567.6, 436.29, 262.98, 238.74, 210.38, 19] calc_df = [19, 2296.34, 436.3, 2732.64] tolerance = 0.01 new_list = [] for num in org_df: for calc_num in calc_df: if abs(num - calc_num) <= tolerance: new_list.append(num) # 匹配到对应元素后直接跳出内层循环,避免重复添加 break print(new_list)
运行输出:
[2732.64, 2296.35, 436.29, 19]
简洁写法(列表推导式+any函数)
new_list = [num for num in org_df if any(abs(num - calc_num) <= 0.01 for calc_num in calc_df)]
常见错误说明
浮点数不能直接用==判断相等,受精度影响差极小值的两个数会被判定为不相等,必须通过差值小于容差阈值的逻辑来判断匹配。
内容的提问来源于stack exchange,提问作者user16431323
相关产品推荐
相关产品推荐

