如何按顺序对列表元素执行指定算术运算?解决索引越界错误
解决列表索引越界问题并优化算术运算
问题分析
你碰到的"list index out of range"错误,大概率是numElements的计算有误——比如误写成len(factors)+1,或是循环中不小心修改了factors列表的长度。另外,你要执行的代数表达式可以化简,能大幅简化计算步骤。
代数表达式化简
你需要执行的运算:x³ + 12x² + 48x + 64
这是完全立方公式的展开式,等价于:(x + 4)³
验证:(x+4)³ = x³ + 3×4x² + 3×4²x + 4³ = x³+12x²+48x+64,完全匹配原表达式,用这个式子计算更高效。
正确代码实现
方法1:直接遍历列表元素(推荐,彻底避免索引错误)
不用手动处理索引,直接遍历factors中的每个元素:
factors = [1, 2, 4, 8, 16, 32, 64, -1, -2, -4, -8, -16, -32, -64] result = [] for x in factors: res = (x + 4) ** 3 result.append(res) print(result)
运行结果:
[125, 216, 512, 1728, 8000, 46656, 274625, 27, 8, 0, -64, -1728, -46656, -216000]
方法2:修复索引式循环
如果一定要用索引循环,确保numElements严格等于列表长度:
factors = [1, 2, 4, 8, 16, 32, 64, -1, -2, -4, -8, -16, -32, -64] numElements = len(factors) # 必须准确获取列表长度 result = [] for i in range(numElements): x = factors[i] res = (x + 4) ** 3 result.append(res) print(result)
方法3:列表推导式(更简洁)
一行代码完成计算:
factors = [1, 2, 4, 8, 16, 32, 64, -1, -2, -4, -8, -16, -32, -64] result = [(x + 4) ** 3 for x in factors] print(result)
错误排查要点
如果仍出现索引越界,检查两点:
- 确认
numElements是len(factors),没有额外的加减操作 - 循环过程中有没有对
factors执行append()、pop()等修改长度的操作
内容的提问来源于stack exchange,提问作者Ixquiac
相关产品推荐
相关产品推荐

