You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用zip()时按对应元素做(i1+i2)/第i个元素运算并求均值

问题解决:两组列表对应元素计算(i1+i2)/第i个元素后求均值

问题分析

你原代码的核心问题有三个:

  1. 未获取元素的索引值,直接使用i会触发NameError(变量未定义);
  2. 计算逻辑错误,原代码是求对应元素乘积的均值,而非你需要的(i1+i2)/第i个元素;
  3. 函数没有返回值,调用后无法得到计算结果。

修正后的代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:01:18