Python循环与列表报错:久未使用Python运行代码触发IndexError
分析Python代码中的IndexError错误及解决办法
嘿,好久没碰Python确实容易踩这种基础小坑,我来帮你拆解一下问题~
错误原因
你这段代码里的问题出在空列表的索引赋值上:
n = int(input()) array = [] # 这里初始化了一个空列表 for i in range(n): array[i] = i+1 # 问题就在这一行!
Python的列表是动态容器,但空列表[]里没有任何元素,也就不存在array[0]、array[1]这些索引位置。当你试图直接给一个不存在的索引赋值时,Python就会抛出IndexError: list assignment index out of range——因为索引超出了列表当前的长度范围。
解决办法
给你三种常用的修正方案,按需选择:
方案1:使用append()方法(最直观)
append()是列表的内置方法,专门用来在列表末尾添加元素,不需要操心索引:
n = int(input()) array = [] for i in range(n): array.append(i+1)
方案2:提前初始化列表长度
如果一定要用索引赋值,可以先创建一个指定长度的列表(用占位元素填充),再逐个修改:
n = int(input()) array = [0] * n # 初始化一个长度为n、元素都是0的列表 for i in range(n): array[i] = i+1
方案3:列表推导式(最Pythonic)
用一行代码直接生成目标列表,简洁高效,也是Python里推荐的写法:
n = int(input()) array = [i+1 for i in range(n)]
内容的提问来源于stack exchange,提问作者oldMCdonald
相关产品推荐
相关产品推荐

