python - 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')
解决方案
即使您已经在第 4 行定义了要使用全局变量end
,该变量还没有任何值。
由于在列表中找到值后您的 for 循环中断b
,因此永远不会设置值 end。相反,只会设置变量的值start
,因为第一个 if 语句将首先评估为 True。
在循环之后,您尝试通过引用变量来删除一系列列表项end
,但是,由于尚未给它赋值,它将引发错误。
一个解决方案可能是end
根据您的需要在第一个 if 语句中设置变量。另外,如果可能的话,我建议避免使用这样的全局变量,正如Stack Overflow 帖子中所解释的那样。
推荐阅读
- postgresql - Hibernate Native Query Left Join vs Postgresql Left join(为什么它们不同)
- python - 矩阵码甚至不起作用,与其他类似
- windows - 从行为类似于键盘的 USB HID 设备读取
- jpeg - 错误“不是 JPEG 文件:以 0x00 0x00 开头”
- swift - 每次调用一个值时创建一个循环以添加 40
- javascript - Jasmine 测试超时并显示“在 5000 毫秒内未调用异步回调”尽管在我的 Angular 项目测试中没有使用异步函数
- javascript - 如果将对象作为参数传递给另一个文件中的函数,原始对象会改变吗?
- java - Thread 对象的 run 方法如何在内部调用 Runnable 对象的 run 方法?
- angular - 在 mat-cell 中使用 ngFor 的正确方法
- microservices - Api 网关如何将响应组合成微服务