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

时间:2017-03-27 23:12:59

标签: python sum nested-lists

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

我的代码(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只是第一行,但是一旦我拥有它我就可以轻松地执行其他行

3 个答案:

答案 0 :(得分:1)

你非常接近:

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

答案 1 :(得分:1)

你的代码不起作用是因为

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

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

相反,您需要设置开始值并将返回循环:

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

这将为您提供第一行。我建议再做一次尝试而不是从SO那里获得完整的解决方案。

答案 2 :(得分:1)

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

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]