学习在二维列表中使用不可变函数实现行求和功能
问题分析与修正
你的代码存在三个关键错误,直接导致运行失败:
- 索引顺序颠倒:二维列表的索引规则是
table[行索引][列索引],你写成了table[n][m]——这里m是行号,n是列号,正确写法应为table[m][n]。 - 错误累加索引值:
row=row+n是把列索引n加到了累加变量里,完全偏离了“行元素求和”的目标,应该累加的是表格中的实际元素值。 - 浮点数调用列表方法:
row是你定义的浮点数累加变量,却调用了row.append()——浮点数没有这个方法,会直接抛出AttributeError。
修正后的嵌套循环代码
def func(table): numrows = len(table) numcols = len(table[0]) result = [] for m in range(numrows): row_sum = 0.00 # 变量名改为row_sum,避免和行列表概念混淆 for n in range(numcols): row_sum += table[m][n] # 累加当前行的列元素 result.append(row_sum) return result
测试示例输入:
print(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]
更简洁的写法(推荐)
Python内置sum()函数可以直接对每行求和,无需手动写嵌套循环:
def func(table): return [sum(row) for row in table]
该写法简洁高效,且不易出错,同样能得到预期结果。
内容的提问来源于stack exchange,提问作者CNG09d
相关产品推荐
相关产品推荐

