为何出现pylint(invalid-sequence-index)警告?附相关代码咨询
解决pylint的
invalid-sequence-index警告:Sequence index is not an int, slice, or instance with index 这个警告的问题出在你定义的grammarCorrection函数里的这一行代码:
for n in RESPONSE[range(0,len(RESPONSE)-1)]:
为什么会触发警告?
Python列表的索引操作(也就是用[]取值)只接受三种类型的参数:
- 整数(比如
RESPONSE[0]) - 切片(比如
RESPONSE[1:3]) - 实现了
__index__方法的自定义对象
但你这里传入的是一个range对象,它不属于上面任何一种,所以pylint作为静态代码检查工具,会提前扫描出这个逻辑错误——哪怕你还没调用这个函数、没测试代码。
怎么修复?
看起来你是想遍历RESPONSE里除最后一个元素外的所有内容,这里给你两种简洁的正确写法:
方法1:用切片(最推荐)
直接用切片语法获取前n-1个元素,切片是列表索引支持的标准类型:
for n in RESPONSE[:-1]: for i in n: if (USER_INPUT in i) and (USER_INPUT != i): print(f'do you mean {i}')
方法2:用range遍历索引
如果你想用range来控制索引范围,需要先遍历range生成的索引值,再通过索引取列表元素:
for idx in range(len(RESPONSE)-1): n = RESPONSE[idx] for i in n: if (USER_INPUT in i) and (USER_INPUT != i): print(f'do you mean {i}')
两种写法都能达到你想要的效果,并且不会触发pylint的警告。
内容的提问来源于stack exchange,提问作者user13433290
相关产品推荐
相关产品推荐

