Python列表访问报错:如何修复遍历列表时的索引输出错误?
问题分析与修复方案:列表索引访问报错
咱们一步步拆解你遇到的问题,以及对应的解决办法:
报错的核心原因
你的代码里有两个明显的逻辑错误,直接导致Python抛出异常:
index变量未定义:你写了print(color[index]),但从头到尾都没声明过index这个变量的取值,Python找不到它,会直接抛出NameError: name 'index' is not defined。- 循环变量用错了对象:
range(0, len(colors))生成的是0到4的整数(对应列表的5个元素的索引),所以循环里的color其实是一个个整数(比如0、1、2...)。你试图对整数用[]索引操作,这完全不符合Python的语法逻辑——整数不是可索引的对象,就算index定义了,也会抛出TypeError: 'int' object is not subscriptable。
针对不同需求的修复代码
根据你提到的“打印列表索引的需求”,分几种常见场景给出对应代码:
场景1:只想打印列表的所有索引值(0、1、2、3、4)
直接遍历range生成的索引序列就行,把循环变量名改成更清晰的index:
colors = ["red", "green", "blue", "yellow", "black"] for index in range(len(colors)): print(index)
场景2:想打印每个索引对应的列表元素(red、green...)
要用索引去访问colors列表本身,而不是循环变量:
colors = ["red", "green", "blue", "yellow", "black"] for index in range(len(colors)): print(colors[index])
或者更符合Python风格的写法,直接遍历列表元素(不用手动管理索引):
colors = ["red", "green", "blue", "yellow", "black"] for color in colors: print(color)
场景3:想同时打印索引和对应的元素(比如“索引0:red”)
用Python内置的enumerate函数最方便,它会同时返回每个元素的索引和值:
colors = ["red", "green", "blue", "yellow", "black"] for index, color in enumerate(colors): print(f"索引 {index}:{color}")
内容的提问来源于stack exchange,提问作者Forge Mods
相关产品推荐
相关产品推荐

