Python列表索引越界问题:长度判断后仍访问不存在元素
解决列表索引越界的问题
嘿,我一眼就看出问题所在啦!你的代码逻辑里,判断条件写错了,才导致还是会触发索引越界错误。
先看你原来的判断:
if len(my_list) > 3: # Only if lists is longer than 4 items
这里注释写的是“只有列表超过4个元素时”,但len(my_list) >3其实包含了长度为4的情况——而长度为4的列表,索引最大是3(因为列表索引从0开始),这时候去访问my_list[4]自然就会报错啦!
要安全访问第5个元素(也就是索引为4的元素),列表的长度必须至少是5。所以正确的判断条件应该是下面两种中的任意一种:
if len(my_list) >= 5:(明确表示列表长度大于等于5)if len(my_list) > 4:(和你的注释意思完全匹配)
修正后的代码大概是这样:
with open(my_file, 'r') as my_probe: for fileLine in my_probe: src_string = fileLine.split() my_list = list(src_string) # 只有当列表至少有5个元素时,才访问第5个元素 if len(my_list) >= 5: print("Info I need: " + my_list[4])
另外提个小优化:src_string = fileLine.split()本身返回的就是列表,所以my_list = list(src_string)这一步其实是多余的,直接用src_string就可以啦,能稍微简化代码:
with open(my_file, 'r') as my_probe: for fileLine in my_probe: my_list = fileLine.split() if len(my_list) >= 5: print("Info I need: " + my_list[4])
内容的提问来源于stack exchange,提问作者Asenski
相关产品推荐
相关产品推荐

