如何修改Python代码实现列表每5个连续元素的均值迭代计算?
问题分析
原代码的核心问题有两个:
- 外层循环遍历列表每个元素完全多余,且每次循环都会重置
total和avg,导致重复计算前5个元素 - 内层循环始终取
inputList[j](j固定0-4),没有随窗口位置偏移,永远只计算前5个元素的均值
修复方案
用滑动窗口思路,遍历每个窗口的起始索引,每次取连续5个元素计算均值:
inputList = [2, 1, 3, 5, 2, 7, 3, 7, 4, 6, 9, 1, 0, 2, 4, 8, 9, 2, 0, 1, 3] # 遍历每个窗口的起始索引,确保最后一个窗口能凑齐5个元素 for i in range(len(inputList) - 5 + 1): # 截取当前窗口的5个连续元素 window = inputList[i:i+5] # 计算总和与均值 total = sum(window) avg = total / 5 print(f"起始索引{i}的窗口均值: {avg}")
代码说明
range(len(inputList) - 5 + 1):保证最后一个窗口的结束索引不超出列表范围,比如21个元素的列表,最后一个起始索引是16(16+5=21)inputList[i:i+5]:Python切片语法,直接获取从索引i开始的5个连续元素sum(window):用内置函数计算总和,比手动循环累加更简洁高效
如果想保留手动累加的方式(适合学习理解),可以改成这样:
inputList = [2, 1, 3, 5, 2, 7, 3, 7, 4, 6, 9, 1, 0, 2, 4, 8, 9, 2, 0, 1, 3] for i in range(len(inputList) - 5 + 1): total = 0 # 内层循环遍历当前窗口的5个元素,索引从i到i+4 for j in range(i, i+5): total += inputList[j] avg = total / 5 print(f"起始索引{i}的窗口均值: {avg}")
内容的提问来源于stack exchange,提问作者Kay Ram
相关产品推荐
相关产品推荐

