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

如何用for循环计算二维嵌套列表行和?现有代码出错求助

问题:计算二维嵌套列表每行元素的和

我想要编写一个函数,接收一个二维嵌套列表(表格),返回包含每行元素和的列表。例如调用func([[0.2,0.1],[-0.2,0.1],[0.2,-0.1],[-0.2,-0.1]])应返回[0.3, -0.1, 0.1, -0.3]。已知该表格是二维嵌套列表,每行仅含数字且长度一致。但我编写的代码仅返回列表中的最后一个数值,累加器逻辑存在问题,无法定位错误,代码如下:

num_rows = len(table)
num_columns = len(table[0])
result = []

for m in range(num_columns):
    row = []
    for n in range(num_rows):
        row.append(table[n][m])
        row = sum(row)

result.append(row)

return result

错误分析

  1. 循环方向搞反:当前代码遍历的是列(m对应列索引),但需求是计算每行的和,应该遍历行而非列。
  2. 累加逻辑错误:内层循环中,每次向row添加元素后立刻调用sum(row)把列表转成数值,后续循环再执行row.append会直接报错(数值类型没有append方法),且这完全不是单行求和的逻辑。
  3. 结果添加位置错误:result.append(row)放在了所有循环外面,只会把最后一次循环的结果加入列表,自然只返回单个数值。

正确实现方式

方式一:最简列表推导式(推荐)

直接利用Python内置的sum函数遍历每行求和:

def func(table):
    return [sum(row) for row in table]

方式二:手动循环累加

如果想手动实现累加逻辑,遍历每行后逐个元素累加:

def func(table):
    result = []
    for row in table:
        row_total = 0
        for num in row:
            row_total += num
        result.append(row_total)
    return result

方式三:保留原变量思路的修正版

如果要沿用你最初定义行数列数的思路,修正后代码如下:

def func(table):
    num_rows = len(table)
    result = []
    for row_idx in range(num_rows):
        current_sum = 0
        num_cols = len(table[row_idx])
        for col_idx in range(num_cols):
            current_sum += table[row_idx][col_idx]
        result.append(current_sum)
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:52:10