You need to enable JavaScript to run this app. Python循环中实现多重求和出现结果翻倍的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Python循环中实现多重求和出现结果翻倍的问题排查

结果翻倍的根因定位

逐行跑通原代码的计算链路,就能定位到结果翻倍的来源:

  • 核心问题是循环维度错位:外层遍历每个j(对应c_var_i的索引)时,内层又把y_t的所有行全部拉进来遍历计算,把不属于当前j的行累加值也纳入了计算范围
  • 实际计算过程拆解:
    1. y_t里每一行的元素和为1+2+3+4+5+6=21,因为y_t有2个完全相同的行,内层遍历所有行后生成的列表为[21, 21]
    2. Python中整数与列表相乘是列表重复操作,c_var_i[j] * [21,21] 会把这个列表重复c_var_i[j]次,生成一个更长的列表,之后再对整个长列表做求和
    3. 最终每个j维度的计算结果为c_var_i[j] * (21 + 21):j=0时输出420,j=1时输出546,刚好是预期值210、273的2倍。因为y_t刚好有2行,结果自然会被放大一倍。
正确实现方式

去掉跨维度的多余遍历,按索引的对应关系匹配计算项,修正后的代码如下:

c_var_i = [10, 13]
y_t = [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]

y = [c_var_i[i] * sum(y_t[i]) for i in range(len(c_var_i))]
print(y)  # 输出 [210, 273],匹配预期值
  • 修正后的逻辑没有多余累加:第0位计算10乘以第一行的和21,得到210;第1位计算13乘以第二行的和21,得到273,完全符合预期。

内容的提问来源于stack exchange,提问作者Shax Studio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 18:27:03