列表的列表行的总和,不使用内置的 sum()

sum of a list row of a list, without using inbuilt sum()

对于测验问题,必须使用嵌套列表来查找每一行的总和,而无需使用内置的 sum()

我的代码(1)

def row_sums(square):
    """ Takes a nested list and returns the sum of the row"""
    row_1 = square[0]
    for sum_1 in row_1:
        for sum_r_1 in sum_1:
            sum_row_1 = 0
            sum_r_1 += sum_row_1
            return sum_r_1

问题是我得到的 int 对象是不可迭代的

我的代码(2)

def row_sums(square):
    """ Takes a nested list and returns the sum of the row"""
    row_1 = square[0]
    for sum_1 in row_1:
            sum_r_1 = 0   
            sum_r_1 += sum_1
            return sum_r_1

我只得到第 1 行列表的第一项。在这种情况下,它是数字 2

来自测验服务器的输入

square = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
]
print(row_sums(square))

预期结果 [15, 15, 15]

我知道我试图获取 atm 的只是第一行,但是一旦我有了它,我就可以轻松地完成其他行

你非常接近:

def row_sums(square):
    sums = []
    for row in square:
        rowsum = 0
        for num in row:
            rowsum += num
        sums.append(rowsum)
    return sums

您的代码不起作用是因为

for sum_1 in row_1:
    sum_r_1 = 0   
    sum_r_1 += sum_1
    return sum_r_1

每次你转到一个新号码时,你将 sum_r_1 设置回 0,然后 return 它...所以它会通过第一个号码,添加它,然后立即 return 不看任何其他数字。

相反,您想设置起始值并 return 循环之外:

sum_r = 0   
for sum_1 in row:
    sum_r += sum_1
return sum_r

这将使您排在第一行。我建议再做一次尝试,而不是从 SO 那里获取完整的解决方案。

这里有一种遍历列表列表的简单方法,将内部列表元素添加到一起并将它们附加到另一个列表。

square =[
    [2,2,2],
    [1,1,1],
    [3,3,3]
]
sumLine=[]

for i in range(len(square)):
   s =0
   for n in square[i]:

        s = s + n


   sumLine.append(s)
   #results in [6, 3, 9]