Python中使用数组索引更新元素触发索引越界错误如何解决
列表索引修改值报错问题解决
报错原因
你触发IndexError: list assignment index out of range的核心问题是赋值时误用了列表元素作为索引:
你代码中遍历得到的y是drinkstock中存储的数值(10、0、9、1),不是列表的索引。当y的值(比如10)大于等于列表长度(当前列表长度为4,有效索引仅为0、1、2、3)时,用drinkstock[y]访问列表就会触发越界错误。
同时你的逻辑存在冗余:你已经拿到了要修改的目标索引x,不需要遍历整个列表匹配索引,直接通过索引赋值即可完成修改。
正确实现代码
x = int(input("Input a number")) drinkstock = [10,0,9,1] # 直接通过索引x修改对应位置的数值 drinkstock[x] = drinkstock[x] - 1 # 打印修改后的元素值 print(drinkstock[x]) # 打印修改后的完整列表 print(drinkstock)
当你输入0时,运行后输出的列表就是你期望的[9, 0, 9, 1]。
优化建议
可以增加输入合法性校验,避免输入的索引超出有效范围触发报错:
x = int(input("Input a number")) drinkstock = [10,0,9,1] if 0 <= x < len(drinkstock): drinkstock[x] -= 1 print(drinkstock[x]) print(drinkstock) else: print("输入索引不合法,有效范围为0到3")
内容的提问来源于stack exchange,提问作者Yun Song
相关产品推荐
相关产品推荐

