Python按元组指定索引对列表元素做减法触发IndexError问题求解
错误原因
你误将元组列表的遍历序号idx作为了数组的操作索引:元组列表li共有6个元素,遍历过程中idx会从0递增到5,但目标数组array长度仅为3,合法索引最大为2,当idx >= 3时访问array[idx]自然触发索引越界错误。
你实际需要使用的数组操作索引是每个元组的第一个元素,不是遍历元组列表的序号。
修复方案
直接迭代元组列表中的每个元组,分别取出目标索引和要减去的数值进行操作即可:
li = [(0, 1), (1, 1), (1, 2), (2, 1), (2, 2), (2, 3)] array = [1,2,3] for tar_idx, sub_val in li: print(array) array[tar_idx] -= sub_val print(array)
如果你需要得到预期的[0, 0, 0]结果,调整元组内的减数与数组初始值匹配即可,比如将li修改为[(0, 1), (1, 2), (2, 3)]即可输出对应结果。
内容的提问来源于stack exchange,提问作者Parth09P
相关产品推荐
相关产品推荐

