使用zip()时按对应元素做(i1+i2)/第i个元素运算并求均值
问题解决:两组列表对应元素计算(i1+i2)/第i个元素后求均值
问题分析
你原代码的核心问题有三个:
- 未获取元素的索引值,直接使用
i会触发NameError(变量未定义); - 计算逻辑错误,原代码是求对应元素乘积的均值,而非你需要的
(i1+i2)/第i个元素; - 函数没有返回值,调用后无法得到计算结果。
修正后的代码
import numpy as np def avg_calc(l1, l2): # 先校验两个列表长度一致,避免后续计算出错 if len(l1) != len(l2): raise ValueError("两个列表的长度必须相同") # 使用enumerate同时获取索引和对应元素对,第i个元素按日常计数从1开始 calc_values = [(i1 + i2) / (idx + 1) for idx, (i1, i2) in enumerate(zip(l1, l2))] # 返回计算后的均值 return np.mean(calc_values)
关键说明
enumerate(zip(l1, l2)):同时遍历两个列表,返回每个元素对的**索引(从0开始)**和对应的i1、i2;- 分母用
idx + 1:因为日常语境中“第i个元素”是从1开始计数,避免出现除以0的错误; - 增加长度校验:防止两个列表长度不同时,zip会截断到较短列表的长度,导致计算结果不符合预期。
内容的提问来源于stack exchange,提问作者user20250841
相关产品推荐
相关产品推荐

