You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:15:04