首页 > 解决方案 > NameError:名称'end'未定义

问题描述

lst=[1,2,3,'b',4,5,6,'c','b',4,5,6,2,'c',9,0,1]

def delElement(E1,E2):
    global end
    for i,ele in enumerate(lst):
        if ele==E1:
            start=i
            break
        elif ele== E2:
            end=i
            break
    del lst[start:end+1]
    return(lst)
delElement('b','c')

标签: pythonlist

解决方案


即使您已经在第 4 行定义了要使用全局变量end,该变量还没有任何值。

由于在列表中找到值后您的 for 循环中断b,因此永远不会设置值 end。相反,只会设置变量的值start,因为第一个 if 语句将首先评估为 True。

在循环之后,您尝试通过引用变量来删除一系列列表项end,但是,由于尚未给它赋值,它将引发错误。

一个解决方案可能是end根据您的需要在第一个 if 语句中设置变量。另外,如果可能的话,我建议避免使用这样的全局变量,正如Stack Overflow 帖子中所解释的那样。


推荐阅读