Getting "NameError: name not defined" when accessing previously defined variables

Getting "NameError: name not defined" when accessing previously defined variables

我在最后一个 if 语句中收到 NameError: name 'index1' 未定义 。我不明白是什么问题,因为我在前面的代码块中定义了 index1 和 index2。

...
else:
    for l1 in Xdisp_list:
        for l2 in l1:
            if l2 == from_previous[run_number-2]:
                index1 = (wn_final.index(l1))
                index2 = (wn_final[wn_final.index(l1)].index(l2))
            else:
                pass
    if w_ki - Xdisp_list[index1][index2] < delta:
        code_list_run.append(0)
...

澄清代码:
Xdisp_list是列表的列表
run_number是一个整数
wn_final也是列表的列表

你在 if else 语句中定义了 index1 和 index2,所以 if 语句 l2 == from_previous[run_number-2] 评估为 False 当评估行 w_ki - Xdisp_list[index1][index2] < delta 时,两者都不会被定义,

您可以在第一个 if 语句中添加第二个 if 语句,或者像这样定义默认值 index1 和 index2,在这种情况下不再需要 else 语句

else:
    for l1 in Xdisp_list:
        for l2 in l1:
            if l2 == from_previous[run_number-2]:
                index1 = (wn_final.index(l1))
                index2 = (wn_final[wn_final.index(l1)].index(l2))

                if w_ki - Xdisp_list[index1][index2] < delta:
                    code_list_run.append(0)