提问人:CNG09d 提问时间:4/15/2023 最后编辑:S.BCNG09d 更新时间:4/16/2023 访问量:227
对 for 循环中的表行求和
Summing rows of a table in a for loop
问:
我正在尝试创建一个函数,该函数接受一个表并返回一个包含每行总和的列表。
例如: 返回。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]
我知道该表是一个 2D 嵌套列表,每行只包含数字,并且每行的长度相同。
我有这个代码,但它似乎只返回列表中的最后一个数字。蓄能器坏了,但我无法弄清楚我在这里做错了什么。
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
答:
0赞
ali khabazian
4/15/2023
#1
您必须循环访问每一行,并将该行的总和追加到结果列表中
#table is for example n*m n row
result=[]
for row in table:# from 0 row to nth row
result.append(sum(row))
0赞
S.B
4/15/2023
#2
如果这是一件非常简单的事情,可以做列表推导:
def func(lst):
return [sum(row) for row in lst]
或者它是等效的方法:map()
def func(lst):
return list(map(sum, lst))
注意:在纯 Python 中,这已经足够了,但如果您需要对多维数组进行快速操作,请考虑改用 Numpy。
0赞
Programmer-RZ
4/16/2023
#3
一个简单的嵌套 for 循环就可以了。列表理解也可以,但我个人不喜欢它。
result = []
for row in table:
sum_of_each_row = 0
for value in row:
sum_of_each_row += value
result.append(sum_of_each_row)
输出:
[0.30000000000000004, -0.1, 0.1, -0.30000000000000004]
基本上,我们遍历表中的每一行,然后遍历该行的每个值。将值和它相加到结果列表中。append()
注意:它返回 0.30000000000000000004 的原因是 python 中的简单舍入问题。
评论
row=sum(row)