Python对列表每5个元素求平均值存入新列表报错如何解决?
代码修正方案
原代码存在的问题
- 遍历语法错误:
for q,r in i,j无法同步遍历两个数组的对应元素,需要用zip()函数打包两个数组后再遍历 - 列表追加逻辑颠倒:你需要将计算得到的平均值存入空列表
a,正确写法为a.append(cov),原代码写反了调用对象 - 分组范围硬编码:固定写死0-125的取值范围只适用于长度为125的列表,建议适配原列表
l的实际长度调整 - 缺少依赖导入:代码用到了numpy的相关方法,开头需要先导入numpy库
修正后的numpy实现版本
import numpy as np # 替换为你自己的原数值列表 l = [1,2,3,4,5,6,7,8,9,10,11] a = [] list_len = len(l) # 自动适配列表长度生成分组索引 i = np.arange(0, list_len, 5) j = np.arange(5, list_len + 5, 5) for q, r in zip(i, j): avg = np.sum(l[q:r]) / 5 a.append(avg) print(a)
纯Python实现版本(无需依赖numpy)
如果场景不需要使用numpy,用原生Python语法也可以实现需求,写法更简洁:
# 替换为你自己的原数值列表 l = [1,2,3,4,5,6,7,8,9,10,11] a = [] # 若要求必须每组满5个才计算,将结束参数改为 len(l) // 5 * 5 即可自动舍弃不足5个的尾部元素 for idx in range(0, len(l), 5): group = l[idx: idx+5] # 不足5个的分组按实际元素数量求平均 avg = sum(group) / len(group) a.append(avg) print(a)
内容的提问来源于stack exchange,提问作者satyam sangeet
相关产品推荐
相关产品推荐

