Python中基于两组嵌套列表计算对应子列表加权平均的实现
问题排查
你的代码无法得到预期结果,核心是三个遗漏点:
- 未做空值兼容:前3组子列表为空时,
np.average接收到空输入和空权重会直接抛出权重和为0的错误,无法正常运行 - 输出结构不对:你直接把计算得到的均值数值追加到结果列表,但要求的输出是和原嵌套结构对齐——空位置保留空列表,有值的位置存仅含计算结果的单元素子列表
- 未做取整处理:加权平均直接返回浮点数,和预期的整数结果不匹配
正确实现代码
import numpy as np A = [[],[],[],[500,540],[510,560,550],[460,510,600,450]] B = [[],[],[],[4000,2500],[3500,3600,3000],[3000,2900,3300,3500]] C = [] for a_sub, b_sub in zip(A, B): # 空列表直接保留原有空结构 if not a_sub: C.append([]) continue # 计算加权平均后四舍五入取整,包装为单元素列表追加 weighted_avg = np.average(a_sub, weights=b_sub) C.append([round(weighted_avg)]) print(C) # 运行输出:[[], [], [], [515], [540], [505]],完全匹配预期格式
实现说明
- 用
zip同步遍历A、B的对应子列表,比索引遍历的可读性更高 - 空列表分支直接跳过计算追加空值,从根源避免运行报错
- 计算完成后通过
round做四舍五入取整,再包装为单元素列表,完全对齐要求的嵌套结构
内容的提问来源于stack exchange,提问作者prob2050
相关产品推荐
相关产品推荐

