Python统计列表指定区间元素触发list index out of range错误排查
错误原因及修复方案
错误触发原因
- 核心逻辑混淆了参数
a、b的作用:a、b是用来判断元素数值是否符合要求的阈值,原代码错误将二者作为列表索引的遍历范围,用range(a, b)生成索引值去访问lst[n]。当a大于等于列表长度、b超过列表长度、a为负数时,访问的索引不在列表合法范围内,就会抛出index list out of range错误。 - 代码中定义的
i = len(lst)全程未使用,属于无效冗余代码。 - 额外冗余逻辑:
else分支执行count = count + 0完全无作用,可直接删除。
修复后代码
直接遍历列表的所有元素,逐个判断数值是否落在(a, b)区间即可,不需要通过索引访问元素:
def between(lst, a, b): count = 0 for num in lst: if num > a and num < b: count = count + 1 return count
如果确实需要用索引遍历的写法,也可以调整为遍历列表长度对应的索引范围:
def between(lst, a, b): count = 0 # 遍历列表合法索引范围 for n in range(len(lst)): if lst[n] > a and lst[n] < b: count += 1 return count
修复后的代码可以正常通过所有给出的测试用例,不会触发索引越界错误。
内容的提问来源于stack exchange,提问作者user3088460
相关产品推荐
相关产品推荐

