2017-03-29 49 views
0

所以我有这样的功能在这里:总和从列表(没有“和”功能)

def row_sums(square): 
    """Returns a list of the row sums in a magic square""" 
    numbers = [] 
    for row in square: 
     result = 0 
     for col in row: 
      result += col 
     numbers.append(result) 
    return numbers 

,当魔方一样输入以下,它将返回的总和不使用内置的功能“和”行:

square = [ 
    [1, 2, 3, 4], 
    [5, 6, 7, 8], 
    [9, 10, 11, 12], 
    [13, 14, 15, 16] 
] 
print(row_sums(square)) 

,因此这将返回:

[10, 26, 42, 58] 

所以这一个好,BU t在我实验室测验中的下一个问题。它要求我修改该函数,以便打印出列的总和。因此,例如输入相同的:

square = [ 
    [1, 2, 3, 4], 
    [5, 6, 7, 8], 
    [9, 10, 11, 12], 
    [13, 14, 15, 16] 
] 
print(column_sums(square)) 

将返回

[28, 32, 36, 40] 

遇到问题搞清楚了这一点。如果有人有一段时间来帮助我,那将会很棒! (注:此功能的目的是不使用“求和”功能,这是不寻常的,但它是嵌套循环的做法) 干杯

回答

0

你可以用这个做所需的OP ..

sum_of_columns = [sum([row[i] for row in square]) for i in range(0,len(square[0]))] 

没有内置SUM函数:

def array_sum(a): 
    result=0 
    for i in a: 
    result+=i 
    return result 

sum_of_columns = [array_sum([row[i] for row in square]) for i in range(0,len(square[0]))] 

根据OP条件函数做column_sum:

def column_sums(square): 
    """Returns a list of the columns sums in a magic square""" 
    numbers = [] 
    for i in range(0, len(square[0])): 
     result = 0 
     for row in square: 
      result += row[i] 
     numbers.append(result) 
    return numbers  
+0

虽然不是使用内置的“总和”功能吗?它在Uni上进行实验测验,他们希望我们在不使用sum函数的情况下制作函数。干杯 –

+0

ohh ...那么你可以写自己的总和功能,只需将它替换成内置的一个.. ... –

+0

你能把我的功能风格类似的格式吗?它对我有点困惑。对不起 –