IndexError: list index out of range 错误原理及解决方法(python)

list index out of range 解决思路

发现问题

当我在写文章金融数据分析(一)python预热中的项目二:计算手机销量年增长率的时候,出现过如下报错:IndexError: list index out of range 错误原理及解决方法(python)_第1张图片
看着结果是已经跑出来了,但是前面那一长串着实然人看着不舒心。再加上Process finished with exit code 1让我更加确信这里面有喵腻。

如图所示,错误提示为

Traceback (most recent call last):
IndexError: list index out of range

查找原因

经过查找相关资料我知道了list index out of range错误出现的原因主要有两个。

一个可能是下标超出范围,
一个可能是list是空的,没有一个元素

接下来我来用一个例子来说明一下这个抽象的说法:
打开idle输入以下代码

>>> li = [1,2,3,4,5,6,7,8,9,10]
>>> #索引[0,1,2,3,4,5,6,7,8,9 ]
>>> li[8]
9
>>> li[10]
Traceback (most recent call last):
  File "", line 1, in <module>
    li[10]
IndexError: list index out of range
>>> # 像这样,索引值超出了循环,也叫越界

尝试解决

尝试第一次解决:
加上try…except模块

for s in linestr:
    try:
        L = s.split('\t')
        print(L[0], end="    ")
        print(isBigGrowth(L, 0.3))
    except:
        print('运行失败')

运行结果:
IndexError: list index out of range 错误原理及解决方法(python)_第2张图片可以看到,让人头疼的红色错误提示已经没有了,而且Process finished with exit code 0
问题看起来已经解决了,但是我们自己知道,这只是表面现象,刚才的问题其实并没有解决,而是我们选择不显示了。 治标不治本!

尝试第二次解决:
我注意到,程序是在最后一条抛异常了。手机公司是能够全部分析判断完的,那会不会是第二个错误原因呢?有为空的list。
所以我对源文档进行了检查,发现在末尾果然存在一行空行。
IndexError: list index out of range 错误原理及解决方法(python)_第3张图片
在删除末尾的空行之后再运行程序:
IndexError: list index out of range 错误原理及解决方法(python)_第4张图片
这下完美了!
舒服=。=

总结

在处理数据之前,检查所分析的数据格式是非常重要的!

你可能感兴趣的:(避坑,python,数据分析)