繁体   English   中英

将数组传递给函数并按索引循环值

[英]Pass array to function and loop over values by index

我不断收到一个 TypeError: unsupported operand type for +: 'int' 和 'list' 所以我猜数组没有被索引? 请协助。

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()

你不应该使用*arr 删除*通配符,您的代码将起作用。

使用通配符,传递给msa2的参数被视为可能更多的额外位置参数之一,因此msa2中的arr是这些参数的列表,第一个元素是您在调用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM