2013-02-03 154 views
0

我一直得到TypeError:不支持的操作數類型爲+:'int'和'list' 所以我猜這個數組沒有被索引?請協助。Python:通過數組傳遞函數並通過索引循環遍歷值

def main(): 
    arr = [1, 2, 3, 4, 5] 
    length = len(arr) 
    maxAns = msa2(length, arr) 
    print maxAns 

def msa2(length, *arr): 
    maxThus = 0 
    for i in range(0, length): 
     sum = 0 
     for j in range(i, length): 
      sum = sum + arr[j]  # how to get value in index j 
      max(maxThus, sum) 
    return maxThus 

if __name__ == '__main__': 
    main() 

回答

3

您不應該使用*arr;刪除*通配符,您的代碼將工作。

以通配符,傳遞到msa2的說法被看作是潛在的更特別的位置參數之一,所以arrmsa2是這些參數列表,第一個元素是你傳遞的,當你叫msa2列表:

>>> def foo(*args): 
...  print args 
... 
>>> foo(1, 2, 3) 
(1, 2, 3) 
>>> foo([1, 2, 3]) 
([1, 2, 3],) 

您的功能也將始終返回0;你不會在任何地方更新maxThus。你可能意味着分配的max(maxThus, sum)maxThus結果:

maxThus = max(maxThus, sum) 
+0

真棒,所以通配符就像一個列表的列表。 Thx也修復了錯誤。投票有用。 – alexy99