2013-10-13 30 views
0

我已经创建了一个函数来查找一个硬编码二维列表的列总和,所以即时通讯只是试图打印出硬编码列总和的值。我基本上添加了列索引并将它们的总和添加到了emptist中。然后我回到那个空的列表。当我尝试打印空列表的值时,出现错误,有帮助吗?如何调用一个函数来处理列表

#Function that returns column sums for list1 

    def columnsumsfunction(a) : 

     rowsize = len(list1) 
     columnsize = len(list1[0]) 
     csum =[] 
     c = 0 
     while c < columnsize : 
      totalsum = 0 
      r = 0 
      while r < rowsize : 
      mysum = list1[r][c] 
      totalsum = totalsum + mysum 
      r = r + 1 
      c = c + 1 
      csum.append(totalsum) 
     return csum 


    for a in list1 : 
     csum = columnsumsfunction(a) 
     print csum 



#main 
list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

我只是不确定如何调用函数来处理list1。李

我只是试图在函数调用打印

5 7 9 
+0

1.删除'list2',如果它与问题无关。 2.你有什么错误? 3.如果输入是“list1”,预期的输出是多少? 4.该函数接受一个从未使用过的参数“a”......这是怎么回事? – kojiro

+0

我得到以下错误NameError:name'list1'未定义。当我把我的逻辑代码部分出来,只是打印填充emptylist“csum”我得到[5,7,9]所以逻辑是正确的,但我不知道如何调用函数来打印这些值 –

+0

您的缩进是不正确:'for'循环不在函数中,这就是为什么'list1'不会被定义的原因(除非你粘贴错误 –

回答

0

在你的问题中的代码是一个小故障,但如果你修复和改变的list所有实例a内工作,你会设置:

#Function that returns column sums for list1 

def columnsumsfunction(a) : 
    rowsize = len(a) 
    columnsize = len(a[0]) 
    csum =[] 
    c = 0 
    while c < columnsize : 
     totalsum = 0 
     r = 0 
     while r < rowsize : 
     mysum = a[r][c] 
     totalsum = totalsum + mysum 
     r = r + 1 
     c = c + 1 
     csum.append(totalsum) 
    return csum 

list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

csum = columnsumsfunction(list1) 
print csum 
0
def columnsumsfunction(): 
    index = 0 
    rowsize = len(list1) 
    columnsize = len(list1[0]) 
    csum =[] 
    c = 0 
    while c < columnsize : 
     totalsum = 0 
     r = 0 
     while r < rowsize : 
      mysum = list1[r][c] 
      totalsum = totalsum + mysum 
      r = r + 1 
     c = c + 1 
     csum.append(totalsum) 
    return csum 

#main 
list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

csum = columnsumsfunction() 
print csum 

如果你要打印5 7 9此代码工作正常。
根本不需要list2。在定义list1之后调用columnsfunction()。
for循环也不是必需的。

相关问题