用于查找数组中正数之和的python函数

时间:2016-10-27 23:21:55

标签: python arrays sum

我需要编写一个函数,它接受一个数字数组并找到所有数字的最大总和。换句话说,我需要找到正数的总和。我写了这个,我得到了#34;列表超出范围"

想法?

    def maximum_sub(A):
        x = 0
        i = 0
        for i in A:
            while A[i] > 0:
            x+=A[i]
            i+=1
        return x

2 个答案:

答案 0 :(得分:4)

改为使用超级函数和列表推导:

>>> a = [1, 2, 3, -4, 5, -3, 7, 8, 9, 6, 4, -7]
>>> sum(x for x in a if x > 0)
45

[x for x in a if x > 0]将创建一个由a中的正值组成的数组。

sum(...)将返回该数组中元素的总和。

答案 1 :(得分:4)

总结和理解有更好的方法,但我会假设你正在编写一个函数作为算法练习。

您不需要while循环。使用if检查它是否为正数,并将其添加到总和中。否则,不要做任何事情。 for循环将自动迭代您的值。

def maximum_sum(A):
    x = 0
    for i in A:
        if i > 0:
            x += i
    return x

一些建议:明确地命名。这是我可能会使用的一些名字:

def maximum_sum(arr):
    max_sum = 0
    for num in arr:
        if num > 0:
            max_sum += num
    return max_sum