You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python对比两个嵌套列表返回首个有差异子列表并停止比对的实现问题

问题解决方法

错误原因

你现有代码的遍历顺序是先遍历参数位置,再遍历子列表索引,导致优先返回每个参数的首个差异,而非首个出现差异的子列表。同时你代码里还存在变量名拼写错误:定义的参数名列表是l_name,但打印时写的是l_par。

修正后的代码

l_name = ["TIME", "ALPHA", "BETA"]         # 参数名列表
liste1 = [[1, 2, 3.0], [2,5.045,6.003], [3, 8.03, 9], [4, 10.5, 5.5]]
liste2 = [[1, 2, 3.0], [2,5.045,6.005], [3, 8.0029, 9], [4, 10.5, 5.5555]]
abs_tol = 0.00001                # 允许的误差阈值

def search_var_delta():
    # 先按子列表顺序遍历,找到第一个有差异的子列表
    for k in range(len(liste1)):
        # 遍历当前子列表的所有参数
        for i in range(len(l_name)):
            a = liste1[k][i]
            b = liste2[k][i]
            diff = abs(a - b)
            if diff >= abs_tol:
                print("the delta : {}".format(diff),
                      "the index : {}".format(k+1),
                      "the parameter : {}".format(l_name[i]))
                # 找到第一个差异后直接返回,终止所有遍历
                return

search_var_delta()

输出结果

the delta : 0.002 the index : 2 the parameter : BETA

和你预期的输出完全匹配,遍历到第2个子列表时检测到BETA参数的差异,立刻终止所有后续比对操作。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:39:02